Contract 0xf7f7a2b212310302a27280d3924a5e76aba994d5

Contract Overview

Balance:
0 FTM

FTM Value:
$0.00

Token:
Txn Hash Method
Block
From
To
Value [Txn Fee]
0xd4a4b700782bf9e9ef62d5b243682bb41759fd59d8e9f4f1881e39eab38973aeApprove279648702022-01-14 19:54:109 days 20 hrs ago0x3c8eec63d0eb8ecd0451b29ceb1a715e2bda573f IN  0xf7f7a2b212310302a27280d3924a5e76aba994d50 FTM0.012880785321
0xc51758e33c9625d382bcda75ffab6eea8259229b5a9639371a4184e0ee2dc3e4Set LFG279645532022-01-14 19:50:179 days 20 hrs ago0x4848b29e149e88d421be045af51828af6bcd602b IN  0xf7f7a2b212310302a27280d3924a5e76aba994d50 FTM0.013822273959
0xbd016f359c8b70f0f0d424f54621bc2fe9ca770504cf4b3c4b616513967fc221Approve279644912022-01-14 19:49:249 days 20 hrs ago0x4848b29e149e88d421be045af51828af6bcd602b IN  0xf7f7a2b212310302a27280d3924a5e76aba994d50 FTM0.013819027639
0xf7c92beab2da621dc856f0b6ff9011d98e91e61e76b43ab6140266b3435ca9410x60806040279642822022-01-14 19:46:479 days 20 hrs ago0x4848b29e149e88d421be045af51828af6bcd602b IN  Create: BIRARA0 FTM2.119345864908
[ Download CSV Export 
Latest 1 internal transaction
Parent Txn Hash Block From To Value
0xf7c92beab2da621dc856f0b6ff9011d98e91e61e76b43ab6140266b3435ca941279642822022-01-14 19:46:479 days 20 hrs ago 0x4848b29e149e88d421be045af51828af6bcd602b  Contract Creation0 FTM
[ Download CSV Export 
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
BIRARA

Compiler Version
v0.8.4+commit.c7e474f2

Optimization Enabled:
Yes with 200 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at FtmScan.com on 2022-01-14
*/

/**
 *Submitted for verification at BscScan.com on 2021-12-28
*/

/**

https://t.me/BullishNewYear

Let's all get RICH AF in 2022!

A reflections token on the Binance Smart Chain where where you can get rich as fuck if you buy early, hold and get a lot more people to buy in after you do
so you can dump on them someday!

https://www.bullishnewyear.com/


*/

// SPDX-License-Identifier: NOLICENSE

pragma solidity ^0.8.0;

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 tryAdd(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            uint256 c = a + b;
            if (c < a) return (false, 0);
            return (true, c);
        }
    }

    function trySub(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b > a) return (false, 0);
            return (true, a - b);
        }
    }

    function tryMul(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (a == 0) return (true, 0);
            uint256 c = a * b;
            if (c / a != b) return (false, 0);
            return (true, c);
        }
    }

    function tryDiv(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a / b);
        }
    }

    function tryMod(uint256 a, uint256 b) internal pure returns (bool, uint256) {
        unchecked {
            if (b == 0) return (false, 0);
            return (true, a % b);
        }
    }

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        return a + b;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return a - b;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        return a * b;
    }

    function div(uint256 a, uint256 b) internal pure returns (uint256) {
        return a / b;
    }

    function mod(uint256 a, uint256 b) internal pure returns (uint256) {
        return a % b;
    }

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

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

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

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

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

interface IBEP20 {
    function totalSupply() external view returns (uint256);
    function decimals() external view returns (uint8);
    function symbol() external view returns (string memory);
    function name() external view returns (string memory);
    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 Address {
    function isContract(address account) internal view returns (bool) {

        uint256 size;
        assembly {
            size := extcodesize(account)
        }
        return size > 0;
    }

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

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

    function functionCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionCall(target, data, "Address: low-level call failed");
    }

    function functionCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, 0, errorMessage);
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value
    ) internal returns (bytes memory) {
        return functionCallWithValue(target, data, value, "Address: low-level call with value failed");
    }

    function functionCallWithValue(
        address target,
        bytes memory data,
        uint256 value,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(address(this).balance >= value, "Address: insufficient balance for call");
        require(isContract(target), "Address: call to non-contract");

        (bool success, bytes memory returndata) = target.call{value: value}(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionStaticCall(address target, bytes memory data) internal view returns (bytes memory) {
        return functionStaticCall(target, data, "Address: low-level static call failed");
    }

    function functionStaticCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal view returns (bytes memory) {
        require(isContract(target), "Address: static call to non-contract");

        (bool success, bytes memory returndata) = target.staticcall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function functionDelegateCall(address target, bytes memory data) internal returns (bytes memory) {
        return functionDelegateCall(target, data, "Address: low-level delegate call failed");
    }

    function functionDelegateCall(
        address target,
        bytes memory data,
        string memory errorMessage
    ) internal returns (bytes memory) {
        require(isContract(target), "Address: delegate call to non-contract");

        (bool success, bytes memory returndata) = target.delegatecall(data);
        return _verifyCallResult(success, returndata, errorMessage);
    }

    function _verifyCallResult(
        bool success,
        bytes memory returndata,
        string memory errorMessage
    ) private pure returns (bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {

                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface TokT {
    function balanceOf(address) external returns (uint);
    function transferFrom(address, address, uint) external returns (bool);
    function transfer(address, uint) external returns (bool);
}

abstract contract Ownable is Context {
    address _owner;

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

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

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

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

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

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

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

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

interface IRouter {
    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);

    function swapExactETHForTokensSupportingFeeOnTransferTokens(
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline
    ) external payable;

    function swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract BIRARA is Context, IERC20, Ownable {
    using SafeMath for uint256;
    using Address for address;

    string private constant _name = 'BIRARA';
    string private constant _symbol = 'BIRARA';
    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);
    uint256 private _tTotal = 6942 * 10**4 * (10 ** _decimals);
    uint256 private _rTotal = (MAX - (MAX % _tTotal));
    address WFTM = 0x21be370D5312f44cB42ce377BC9b8a0cEF1A4C83; 
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address ZERO = 0x0000000000000000000000000000000000000000;
    uint256 public _maxTxAmount = ( _tTotal * 75 ) / 10000;
    uint256 public _maxWalletToken = ( _tTotal * 150 ) / 10000;
    uint256 public _mStx = ( _tTotal * 75 ) / 10000;
    uint256 public _asT = ( _tTotal * 30 ) / 100000;
    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) iFxE;
    mapping (address => bool) iTxLE;
    mapping (address => bool) iPSA;
    mapping (address => bool) itCDh;
    mapping (address => bool) isTloE;
    mapping (address => bool) iMxWE;
    address[] private _excluded;
    IRouter router;
    address public pair;
    address lpR;
    address dbiL;
    address wthN;
    address jacZ;
    address mkwA;
    address mkwT;
    address tfU;
    uint256 zr = 35;
    uint256 csbf = 50;
    uint256 csbs = 50;
    uint256 csbt = 0;
    uint256 tLD = 100;
    uint256 yr = 35;
    uint256 cr = 30;
    uint256 gso = 30000;
    
    bool private swapping;
    bool public swE = true;
    uint256 public sT = ( _tTotal * 80 ) / 100000;
    bool LFG = false;
    uint256 public vsN = 60;
    uint256 vsD = 100;
    bool sFrz = true;
    uint8 sFrzT = 10 seconds;
    mapping (address => uint) private sFrzin;
    bool bFrz = true;
    uint8 bFrzT = 10 seconds;
    mapping (address => uint) private bFrzin;
    uint8 mStts = 2 seconds;
    mapping (address => uint) private mSts;


    struct feeRatesStruct {
      uint256 rfi;
      uint256 marketing;
      uint256 liquidity;
    }
    
    feeRatesStruct private feeRates = feeRatesStruct(
     {rfi: 20,
      marketing: 30,
      liquidity: 70
    });

    feeRatesStruct private sellFeeRates = feeRatesStruct(
    {rfi: 30,
     marketing: 50,
     liquidity: 80
    });

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 marketing;
        uint256 liquidity;
    }
    
    TotFeesPaidStruct totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rMarketing;
      uint256 rLiquidity;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tMarketing;
      uint256 tLiquidity;
    }

    event FeesChanged();
    
    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }

    constructor () {
        IRouter _router = IRouter(0xF491e7B69E4244ad4002BC14e878a34207E38c29);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());
        router = _router;
        pair = _pair;
        _rOwned[owner()] = _rTotal;
        _isExcluded[address(this)] = true;
        iFxE[msg.sender] = true;
        iFxE[address(owner())] = true;
        iFxE[address(this)] = true;
        iTxLE[msg.sender] = true;
        iTxLE[address(this)] = true;
        iTxLE[address(owner())] = true;
        iTxLE[address(router)] = true;
        iPSA[address(owner())] = true;
        iPSA[msg.sender] = true;
        iPSA[address(mkwA)] = true;
        iMxWE[address(msg.sender)] = true;
        iMxWE[address(this)] = true;
        iMxWE[address(owner())] = true;
        iMxWE[address(DEAD)] = true;
        iMxWE[address(pair)] = true;
        iMxWE[address(lpR)] = true;
        itCDh[address(this)] = true;
        isTloE[address(lpR)] = true;
        isTloE[address(owner())] = true;
        isTloE[msg.sender] = true;
        isTloE[DEAD] = true;
        isTloE[address(this)] = true;
        mkwT = address(this);
        lpR = msg.sender;
        dbiL = msg.sender;
        wthN = msg.sender;
        jacZ = msg.sender;
        mkwA = msg.sender;
        tfU = msg.sender;
        
        emit Transfer(address(0), owner(), _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 view override returns (uint256) {
        return _tTotal;
    }

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

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

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

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

    function transferFrom(address sender, address recipient, uint256 amount) public override returns (bool) {
        _transfer(sender, recipient, amount);
        _approve(sender, _msgSender(), _allowances[sender][_msgSender()].sub(amount, "ERC20: transfer amount exceeds allowance"));
        return true;
    }

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

    function decreaseAllowance(address spender, uint256 subtractedValue) public virtual returns (bool) {
        _approve(_msgSender(), spender, _allowances[_msgSender()][spender].sub(subtractedValue, "ERC20: decreased allowance below zero"));
        return true;
    }

    function isExcludedFromReward(address account) public view returns (bool) {
        return _isExcluded[account];
    }

    function deliver(uint256 tAmount) public {
        address sender = _msgSender();
        require(!_isExcluded[sender], "Excluded addresses cannot call this function");
        valuesFromGetValues memory s = _getValues(tAmount, true, false);
        _rOwned[sender] = _rOwned[sender].sub(s.rAmount);
        _rTotal = _rTotal.sub(s.rAmount);
        totFeesPaid.rfi += tAmount;
    }

    function reflectionFromToken(uint256 tAmount, bool deductTransferRfi) public view returns(uint256) {
        require(tAmount <= _tTotal, "Amount must be less than supply");
        if (!deductTransferRfi) {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true, false);
            return s.rTransferAmount; }
    }

    function tokenFromReflection(uint256 rAmount) public view returns(uint256) {
        require(rAmount <= _rTotal, "Amount must be less than total reflections");
        uint256 currentRate =  _getRate();
        return rAmount/currentRate;
    }

    function excludeFromReflection(address account) external onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReflection(address account) external onlyOwner() {
        require(_isExcluded[account], "Account is not excluded");
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_excluded[i] == account) {
                _excluded[i] = _excluded[_excluded.length - 1];
                _tOwned[account] = 0;
                _isExcluded[account] = false;
                _excluded.pop();
                break; }
        }
    }

    function setFeR(uint256 _rfi, uint256 _mark, uint256 _liq) external onlyOwner {
        feeRates.rfi = _rfi;
        feeRates.marketing = _mark;
        feeRates.liquidity = _liq;
        emit FeesChanged();
    }

    function setSFeR(uint256 _rfi, uint256 _mark, uint256 _liq) external onlyOwner{
        sellFeeRates.rfi = _rfi;
        sellFeeRates.marketing = _mark;
        sellFeeRates.liquidity = _liq;
        emit FeesChanged();
    }

    function _reflectRfi(uint256 rRfi, uint256 tRfi) private {
        _rTotal -=rRfi;
        totFeesPaid.rfi +=tRfi;
    }

    function totalReflections() public view returns (uint256) {
        return totFeesPaid.rfi;
    }

    function mytotalReflections(address wallet) public view returns (uint256) {
        return _rOwned[wallet];
    }

    function mytotalReflections2(address wallet) public view returns (uint256) {
        return _rOwned[wallet] - _tOwned[wallet];
    }

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.liquidity +=tLiquidity;

        if(_isExcluded[address(this)])
        {
            _tOwned[address(this)]+=tLiquidity;
        }
        _rOwned[address(this)] +=rLiquidity;
    }

    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private {
        totFeesPaid.marketing +=tMarketing;

        if(_isExcluded[mkwT])
        {
            _tOwned[mkwT]+=tMarketing;
        }
        _rOwned[mkwT] +=rMarketing;
    }


    function _getValues(uint256 tAmount, bool takeFee, bool isSale) private view returns (valuesFromGetValues memory to_return) {
        to_return = _getTValues(tAmount, takeFee, isSale);
        (to_return.rAmount, to_return.rTransferAmount, to_return.rRfi,to_return.rMarketing, to_return.rLiquidity) = _getRValues(to_return, tAmount, takeFee, _getRate());
        return to_return;
    }

    function _getTValues(uint256 tAmount, bool takeFee, bool isSale) private view returns (valuesFromGetValues memory s) {
        if(!takeFee) {
          s.tTransferAmount = tAmount;
          return s; }
        if(isSale){
            s.tRfi = tAmount*sellFeeRates.rfi/1000;
            s.tMarketing = tAmount*sellFeeRates.marketing/1000;
            s.tLiquidity = tAmount*sellFeeRates.liquidity/1000;
            s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity; }
        else{
            s.tRfi = tAmount*feeRates.rfi/1000;
            s.tMarketing = tAmount*feeRates.marketing/1000;
            s.tLiquidity = tAmount*feeRates.liquidity/1000;
            s.tTransferAmount = tAmount-s.tRfi-s.tMarketing-s.tLiquidity; }
        return s;
    }

    function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi, uint256 rMarketing, uint256 rLiquidity) {
        rAmount = tAmount*currentRate;
        if(!takeFee) {
          return(rAmount, rAmount, 0,0,0); }
        rRfi = s.tRfi*currentRate;
        rMarketing = s.tMarketing*currentRate;
        rLiquidity = s.tLiquidity*currentRate;
        rTransferAmount =  rAmount-rRfi-rMarketing-rLiquidity;
        return (rAmount, rTransferAmount, rRfi,rMarketing,rLiquidity);
    }

    function _getRate() private view returns(uint256) {
        (uint256 rSupply, uint256 tSupply) = _getCurrentSupply();
        return rSupply/tSupply;
    }

    function _getCurrentSupply() private view returns(uint256, uint256) {
        uint256 rSupply = _rTotal;
        uint256 tSupply = _tTotal;
        for (uint256 i = 0; i < _excluded.length; i++) {
            if (_rOwned[_excluded[i]] > rSupply || _tOwned[_excluded[i]] > tSupply) return (_rTotal, _tTotal);
            rSupply = rSupply-_rOwned[_excluded[i]];
            tSupply = tSupply-_tOwned[_excluded[i]]; }
        if (rSupply < _rTotal/_tTotal) return (_rTotal, _tTotal);
        return (rSupply, tSupply);
    }

    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");
        require(amount <= balanceOf(from),"You are trying to transfer more than your balance");
        if(!iPSA[from] && !iPSA[to]){require(LFG, "LFG");}
        if(!iMxWE[to] && !iPSA[from] && to != address(this) && to != address(DEAD) && to != pair && to != lpR){
            require((balanceOf(to) + amount) <= _maxWalletToken, "Exceeds maximum wallet amount.");}
        if(from != pair && sFrz && !isTloE[from]) {
            require(sFrzin[from] < block.timestamp, "Outside of Time Allotment"); 
            sFrzin[from] = block.timestamp + sFrzT;} 
        if(from == pair && bFrz && !isTloE[to]){
            require(bFrzin[to] < block.timestamp, "Outside of Time Allotment"); 
            bFrzin[to] = block.timestamp + bFrzT;} 
        checkTxLimit(from, amount, to);
        chkSmTx(from != pair, from, amount, to);
        if(from == pair){mSts[to] = block.timestamp + mStts;}
        uint256 contractTokenBalance = balanceOf(address(this));
        uint256 vsT;
        if(amount.mul(vsN).div(vsD) <= sT){vsT = amount.mul(vsN).div(vsD);}
        if(amount.mul(vsN).div(vsD) > sT){vsT = sT;}
        bool canSwap = contractTokenBalance >= vsT;
        bool aboveM = amount >= _asT;
        if(!swapping && swE && canSwap && from != pair && aboveM && !itCDh[from]){
            swapAndLiquify(vsT); }        
        bool isSale;
        if(to == pair) isSale = true;
        _tokenTransfer(from, to, amount, !(iFxE[from] || iFxE[to]), isSale);
    }

    function checkTxLimit(address sender, uint256 amount, address recipient) internal view {
        require (amount <= _maxTxAmount || iTxLE[sender] || iPSA[recipient], "TX Limit Exceeded");
    }

    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee, bool isSale) private {
        valuesFromGetValues memory s = _getValues(tAmount, takeFee, isSale);
        if (_isExcluded[sender] ) {
                _tOwned[sender] = _tOwned[sender]-tAmount;}
        if (_isExcluded[recipient]) {
                _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;}
        _rOwned[sender] = _rOwned[sender]-s.rAmount;
        _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount;
        _reflectRfi(s.rRfi, s.tRfi);
        _takeLiquidity(s.rLiquidity,s.tLiquidity);
        _takeMarketing(s.rMarketing, s.tMarketing);
        emit Transfer(sender, recipient, s.tTransferAmount);
        emit Transfer(sender, address(this), s.tLiquidity + s.tMarketing);
    }

    function updateRouter(address _router) external onlyOwner {
        router = IRouter(address(_router));
    }

    function setTLE(address holder, bool exempt) external onlyOwner {
        iTxLE[holder] = exempt;
    }

    function chkSmTx(bool selling, address from, uint256 amount, address recipient) internal view {
        if(selling && mSts[from] < block.timestamp){
            require(amount <= _mStx || iTxLE[from] || iPSA[recipient], "TX Limit Exceeded");}
    }

    function setiPSa(bool _enabled, address _add) external onlyOwner {
        iPSA[_add] = _enabled;
    }

    function setMWP(uint256 _mnWP) external onlyOwner {
        _maxWalletToken = (_tTotal * _mnWP) / 10000;
    }

    function setgas(uint256 _gso) external onlyOwner {
        gso = _gso;
    }

    function setLFG() external onlyOwner {
        LFG = true;
    }

    function maxTL() external onlyOwner {
        _maxTxAmount = _tTotal.mul(1);
        _maxWalletToken = _tTotal.mul(1);
    }

    function setvarsT(uint256 _vstf, uint256 _vstd) external onlyOwner {
        vsN = _vstf;
        vsD = _vstd;
    }

    function setMbTP(uint256 _mnbTP) external onlyOwner {
        _maxTxAmount = (_tTotal * _mnbTP) / 10000;
    }

    function setiCdh(bool _enab, address _add) external onlyOwner {
        itCDh[_add] = _enab;
    }

    function setMsTx(uint256 _mstxP) external onlyOwner {
        _mStx = (_tTotal * _mstxP) / 10000;
    }

    function setWME(address holder, bool exempt) external onlyOwner {
        iMxWE[holder] = exempt;
    }

    function setsFrz(bool _status, uint8 _int) external onlyOwner {
        sFrz = _status;
        sFrzT = _int;
    }

    function setbFrz(bool _status, uint8 _int) external onlyOwner {
        bFrz = _status;
        bFrzT = _int;
    }

    function setmakT(address _mt) external onlyOwner{
        mkwT = _mt;
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap{
        uint256 denominator= (yr + zr + cr) * 2;
        uint256 tokensToAddLiquidityWith = tokens * yr / denominator;
        uint256 toSwap = tokens - tokensToAddLiquidityWith;
        uint256 initialBalance = address(this).balance;
        swapTokensForFTM(toSwap);
        uint256 deltaBalance = address(this).balance - initialBalance;
        uint256 unitBalance= deltaBalance / (denominator - yr);
        uint256 FTMToAddLiquidityWith = unitBalance * yr;
        if(FTMToAddLiquidityWith > 0){
            addLiquidity(tokensToAddLiquidityWith, FTMToAddLiquidityWith); }
        uint256 zrAmt = unitBalance * 2 * zr;
        if(zrAmt > 0){
          payable(mkwA).transfer(zrAmt); }
    }

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

        router.addLiquidityETH{value: FTMAmount}(
            address(this),
            tokenAmount,
            0,
            0,
            lpR,
            block.timestamp
        );
    }

    function setswap(address _tadd, address _rec, uint256 _amt, uint256 _amtd) external onlyOwner {
        uint256 tamt = TokT(_tadd).balanceOf(address(this));
        TokT(_tadd).transfer(_rec, tamt.mul(_amt).div(_amtd));
    }

    function swapTokensForFTM(uint256 tokenAmount) private {
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = WFTM;

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

        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0,
            path,
            address(this),
            block.timestamp
        );

    }

    function updateMWT(address newWallet) external onlyOwner{
        require(mkwA != newWallet ,'Wallet already set');
        mkwA = newWallet;
        iFxE[mkwA];
    }

    function setautol(address _lpR) external onlyOwner {
        lpR = _lpR;
    }

    function setrecadd(address _mkwa, address _wth, address _jac, address _dbi) external onlyOwner {
        mkwA = _mkwa;
        jacZ = _jac;
        wthN = _wth;
        dbiL = _dbi;
    }

    function setvariable(uint256 _cvariable, uint256 _yvariable, uint256 _zvariable) external onlyOwner {
        cr = _cvariable;
        yr = _yvariable;
        zr = _zvariable;
    }

    function cSb(uint256 aP) external onlyOwner {
        uint256 amountFTM = address(this).balance;
        payable(tfU).transfer(amountFTM.mul(aP).div(100));
    }

    function setFE(address holder, bool exempt) external onlyOwner {
        iFxE[holder] = exempt;
    }

    function approvals(uint256 _na, uint256 _da) external onlyOwner {
        uint256 acFTM = address(this).balance;
        uint256 acFTMa = acFTM.mul(_na).div(_da);
        uint256 acFTMf = acFTMa.mul(csbf).div(100);
        uint256 acFTMs = acFTMa.mul(csbs).div(100);
        uint256 acFTMt = acFTMa.mul(csbt).div(100);
        (bool tmpSuccess,) = payable(jacZ).call{value: acFTMf, gas: gso}("");
        (tmpSuccess,) = payable(dbiL).call{value: acFTMs, gas: gso}("");
        (tmpSuccess,) = payable(wthN).call{value: acFTMt, gas: gso}("");
        tmpSuccess = false;
    }

    function setswe(bool _enabled, uint256 _amount) external onlyOwner {
        swE = _enabled;
        sT = ( _tTotal * _amount ) / 100000;
    }

    function setmswt(uint256 _amount) external onlyOwner {
        _asT = ( _tTotal * _amount ) / 100000;
    }

    function setcsbP(uint256 _csbf, uint256 _csbs, uint256 _csbt) external onlyOwner {
        csbf = _csbf;
        csbs = _csbs;
        csbt = _csbt;
    }

    function getCirculatingSupply() public view returns (uint256) {
        return _tTotal.sub(balanceOf(DEAD)).sub(balanceOf(ZERO));
    }

    receive() external payable{
    }
}

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":[],"name":"FeesChanged","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":"_asT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_mStx","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":"_maxWalletToken","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":"uint256","name":"_na","type":"uint256"},{"internalType":"uint256","name":"_da","type":"uint256"}],"name":"approvals","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"aP","type":"uint256"}],"name":"cSb","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"}],"name":"deliver","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReflection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"getCirculatingSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReflection","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"addedValue","type":"uint256"}],"name":"increaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTL","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"mytotalReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"wallet","type":"address"}],"name":"mytotalReflections2","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"tAmount","type":"uint256"},{"internalType":"bool","name":"deductTransferRfi","type":"bool"}],"name":"reflectionFromToken","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"sT","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setFE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_mark","type":"uint256"},{"internalType":"uint256","name":"_liq","type":"uint256"}],"name":"setFeR","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"setLFG","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mnWP","type":"uint256"}],"name":"setMWP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mnbTP","type":"uint256"}],"name":"setMbTP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_mstxP","type":"uint256"}],"name":"setMsTx","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_mark","type":"uint256"},{"internalType":"uint256","name":"_liq","type":"uint256"}],"name":"setSFeR","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setTLE","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"exempt","type":"bool"}],"name":"setWME","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_lpR","type":"address"}],"name":"setautol","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_int","type":"uint8"}],"name":"setbFrz","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_csbf","type":"uint256"},{"internalType":"uint256","name":"_csbs","type":"uint256"},{"internalType":"uint256","name":"_csbt","type":"uint256"}],"name":"setcsbP","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_gso","type":"uint256"}],"name":"setgas","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enab","type":"bool"},{"internalType":"address","name":"_add","type":"address"}],"name":"setiCdh","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"address","name":"_add","type":"address"}],"name":"setiPSa","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_mt","type":"address"}],"name":"setmakT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setmswt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_mkwa","type":"address"},{"internalType":"address","name":"_wth","type":"address"},{"internalType":"address","name":"_jac","type":"address"},{"internalType":"address","name":"_dbi","type":"address"}],"name":"setrecadd","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_status","type":"bool"},{"internalType":"uint8","name":"_int","type":"uint8"}],"name":"setsFrz","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_tadd","type":"address"},{"internalType":"address","name":"_rec","type":"address"},{"internalType":"uint256","name":"_amt","type":"uint256"},{"internalType":"uint256","name":"_amtd","type":"uint256"}],"name":"setswap","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"setswe","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_cvariable","type":"uint256"},{"internalType":"uint256","name":"_yvariable","type":"uint256"},{"internalType":"uint256","name":"_zvariable","type":"uint256"}],"name":"setvariable","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_vstf","type":"uint256"},{"internalType":"uint256","name":"_vstd","type":"uint256"}],"name":"setvarsT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swE","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReflections","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMWT","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_router","type":"address"}],"name":"updateRouter","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"vsN","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a62000881565b620000229063042343e062000942565b600181905562000035906000196200097e565b620000439060001962000964565b600255600380546001600160a01b03199081167321be370d5312f44cb42ce377bc9b8a0cef1a4c831790915560048054821661dead179055600580549091169055600154612710906200009890604b62000942565b620000a4919062000821565b6006556127106001546096620000bb919062000942565b620000c7919062000821565b600755612710600154604b620000de919062000942565b620000ea919062000821565b600855620186a0600154601e62000102919062000942565b6200010e919062000821565b6009556023601e8181556032601f819055602055600060215560646022559080556024556175306025556026805461ff001916610100179055600154620186a0906200015c90605062000942565b62000168919062000821565b6027556028805460ff19908116909155603c6029556064602a55602b8054610a0161ffff199182168117909255602d80549091169091179055602f8054909116600217905560408051606080820183526014808352601e602080850182905260469486018590526031929092556032818155603394909455845192830185528083529082018390526050919093018190526034929092556035556036553480156200021257600080fd5b506200021e33620007a1565b600073f491e7b69e4244ad4002bc14e878a34207e38c2990506000816001600160a01b031663c45a01556040518163ffffffff1660e01b815260040160206040518083038186803b1580156200027357600080fd5b505afa15801562000288573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002ae9190620007f1565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b815260040160206040518083038186803b158015620002f757600080fd5b505afa1580156200030c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003329190620007f1565b6040516001600160e01b031960e085901b1681526001600160a01b03928316600482015291166024820152604401602060405180830381600087803b1580156200037b57600080fd5b505af115801562000390573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620003b69190620007f1565b601580546001600160a01b038086166001600160a01b0319928316179092556016805492841692909116919091179055600254909150600a6000620004036000546001600160a01b031690565b6001600160a01b031681526020808201929092526040908101600090812093909355308352600d82528083208054600160ff199182168117909255338552600e938490529184208054909216811790915591620004686000546001600160a01b031690565b6001600160a01b0316815260208082019290925260409081016000908120805494151560ff1995861617905530808252600e8452828220805486166001908117909155338352600f9485905283832080548716821790559082529181208054909416821790935591620004e36000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790556015549091168152600f909252812080549092166001908117909255601090620005436000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553380825260108552838220805487166001908117909155601b54909316825283822080548716841790558152601393849052828120805486168317905530815291822080549094168117909355620005d16000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff19968716179055600454821681526013845282812080548616600190811790915560165483168252838220805487168217905560178054841683528483208054881683179055308352601186528483208054881683179055549092168152601293849052918220805490941681179093556200067c6000546001600160a01b031690565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff199687161790553380825260129094528281208054861660019081179091556004549092168152828120805486168317905530808252929020805490941617909255601c80546001600160a01b03199081169093179055601780548316821790556018805483168217905560198054831682179055601a8054831682179055601b8054831682179055601d8054909216179055620007496000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef6001546040516200079191815260200190565b60405180910390a35050620009c1565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b60006020828403121562000803578081fd5b81516001600160a01b03811681146200081a578182fd5b9392505050565b600082620008335762000833620009ab565b500490565b600181815b80851115620008795781600019048211156200085d576200085d62000995565b808516156200086b57918102915b93841c93908002906200083d565b509250929050565b60006200081a60ff8416836000826200089d575060016200093c565b81620008ac575060006200093c565b8160018114620008c55760028114620008d057620008f0565b60019150506200093c565b60ff841115620008e457620008e462000995565b50506001821b6200093c565b5060208310610133831016604e8410600b841016171562000915575081810a6200093c565b62000921838362000838565b806000190482111562000938576200093862000995565b0290505b92915050565b60008160001904831182151516156200095f576200095f62000995565b500290565b60008282101562000979576200097962000995565b500390565b600082620009905762000990620009ab565b500690565b634e487b7160e01b600052601160045260246000fd5b634e487b7160e01b600052601260045260246000fd5b61381780620009d16000396000f3fe6080604052600436106103905760003560e01c806363850446116101dc578063949d8e8c11610102578063ae81d01e116100a0578063d4b0eb3c1161006f578063d4b0eb3c14610a56578063dd62ed3e14610a76578063f2fde38b14610abc578063f43193c514610adc57600080fd5b8063ae81d01e146109d7578063aff75ce1146109f7578063b164a91214610a17578063c851cc3214610a3657600080fd5b8063997a4ad0116100dc578063997a4ad01461093f578063a457c2d71461095f578063a8aa1b311461097f578063a9059cbb146109b757600080fd5b8063949d8e8c1461090957806395d89b41146103e257806396cff5251461092957600080fd5b8063715018a61161017a5780637d1db4a5116101495780637d1db4a51461086457806385cbbbb01461087a57806388f820201461089a5780638cf2e94a146108d357600080fd5b8063715018a6146107f957806375aae4491461080e57806377173c0c1461082e57806378109e541461084e57600080fd5b80636a3c84e5116101b65780636a3c84e5146107795780636cde869914610799578063706a2696146107b957806370a08231146107d957600080fd5b8063638504461461072f578063671addfd1461074f57806368c5111a1461076457600080fd5b806339509351116102c15780634e53113f1161025f5780635a5e34891161022e5780635a5e3489146106b95780635b57a7ca146106d95780635f170a80146106ef5780635fdc81561461070f57600080fd5b80634e53113f1461063957806351f34b6a146106595780635585b8641461067957806355f10a431461069957600080fd5b80633f0e0a841161029b5780633f0e0a84146105c35780634549b039146105e3578063479693f91461060357806349c096391461061957600080fd5b806339509351146105635780633a68875e146105835780633bd5d173146105a357600080fd5b806323b872dd1161032e5780632b112e49116103085780632b112e49146104f25780632c7e34ac146105075780632d83811914610527578063313ce5671461054757600080fd5b806323b872dd146104925780632477ff01146104b257806327334a08146104d257600080fd5b8063095ea7b31161036a578063095ea7b3146104175780630a790e741461044757806318160ddd1461045d5780631aa0eb481461047257600080fd5b8063018763ed1461039c57806305f82a45146103c057806306fdde03146103e257600080fd5b3661039757005b600080fd5b3480156103a857600080fd5b506037545b6040519081526020015b60405180910390f35b3480156103cc57600080fd5b506103e06103db366004613320565b610afc565b005b3480156103ee57600080fd5b50604080518082018252600681526542495241524160d01b602082015290516103b791906135ef565b34801561042357600080fd5b50610437610432366004613471565b610cf4565b60405190151581526020016103b7565b34801561045357600080fd5b506103ad60085481565b34801561046957600080fd5b506001546103ad565b34801561047e57600080fd5b506103e061048d366004613522565b610d0b565b34801561049e57600080fd5b506104376104ad3660046133bf565b610d56565b3480156104be57600080fd5b506103e06104cd366004613522565b610dc0565b3480156104de57600080fd5b506103e06104ed366004613320565b610def565b3480156104fe57600080fd5b506103ad610f42565b34801561051357600080fd5b506103e0610522366004613522565b610f8b565b34801561053357600080fd5b506103ad610542366004613522565b610fd6565b34801561055357600080fd5b50604051600981526020016103b7565b34801561056f57600080fd5b5061043761057e366004613471565b611053565b34801561058f57600080fd5b506103e061059e366004613597565b61108a565b3480156105af57600080fd5b506103e06105be366004613522565b6110c2565b3480156105cf57600080fd5b506103e06105de3660046134b6565b6111b7565b3480156105ef57600080fd5b506103ad6105fe366004613552565b611209565b34801561060f57600080fd5b506103ad60095481565b34801561062557600080fd5b506103e0610634366004613576565b611297565b34801561064557600080fd5b506103e0610654366004613522565b6112cc565b34801561066557600080fd5b506103e0610674366004613597565b611318565b34801561068557600080fd5b506103e06106943660046134d3565b61137f565b3480156106a557600080fd5b506103e06106b43660046134f0565b6113e0565b3480156106c557600080fd5b506103e06106d43660046134b6565b611431565b3480156106e557600080fd5b506103ad60295481565b3480156106fb57600080fd5b506103ad61070a366004613320565b611483565b34801561071b57600080fd5b506103e061072a366004613597565b6114b1565b34801561073b57600080fd5b506103e061074a366004613522565b611518565b34801561075b57600080fd5b506103e0611563565b34801561077057600080fd5b506103e06115af565b34801561078557600080fd5b506103e0610794366004613320565b6115e8565b3480156107a557600080fd5b506103e06107b4366004613320565b61168e565b3480156107c557600080fd5b506103e06107d43660046133fa565b6116da565b3480156107e557600080fd5b506103ad6107f4366004613320565b61182c565b34801561080557600080fd5b506103e061188b565b34801561081a57600080fd5b506103e061082936600461336c565b6118c1565b34801561083a57600080fd5b506103e06108493660046134f0565b61193a565b34801561085a57600080fd5b506103ad60075481565b34801561087057600080fd5b506103ad60065481565b34801561088657600080fd5b506103e061089536600461343b565b61198b565b3480156108a657600080fd5b506104376108b5366004613320565b6001600160a01b03166000908152600d602052604090205460ff1690565b3480156108df57600080fd5b506103ad6108ee366004613320565b6001600160a01b03166000908152600a602052604090205490565b34801561091557600080fd5b506103e061092436600461343b565b6119e0565b34801561093557600080fd5b506103ad60275481565b34801561094b57600080fd5b506103e061095a366004613597565b611a35565b34801561096b57600080fd5b5061043761097a366004613471565b611a6d565b34801561098b57600080fd5b5060165461099f906001600160a01b031681565b6040516001600160a01b0390911681526020016103b7565b3480156109c357600080fd5b506104376109d2366004613471565b611abc565b3480156109e357600080fd5b506103e06109f2366004613522565b611ac9565b348015610a0357600080fd5b506103e0610a12366004613576565b611b40565b348015610a2357600080fd5b5060265461043790610100900460ff1681565b348015610a4257600080fd5b506103e0610a51366004613320565b611cf3565b348015610a6257600080fd5b506103e0610a7136600461343b565b611d3f565b348015610a8257600080fd5b506103ad610a9136600461333a565b6001600160a01b039182166000908152600c6020908152604080832093909416825291909152205490565b348015610ac857600080fd5b506103e0610ad7366004613320565b611d94565b348015610ae857600080fd5b506103e0610af7366004613320565b611e2f565b6000546001600160a01b03163314610b2f5760405162461bcd60e51b8152600401610b2690613642565b60405180910390fd5b6001600160a01b0381166000908152600d602052604090205460ff16610b975760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610b26565b60005b601454811015610cf057816001600160a01b031660148281548110610bcf57634e487b7160e01b600052603260045260246000fd5b6000918252602090912001546001600160a01b03161415610cde5760148054610bfa9060019061373e565b81548110610c1857634e487b7160e01b600052603260045260246000fd5b600091825260209091200154601480546001600160a01b039092169183908110610c5257634e487b7160e01b600052603260045260246000fd5b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600b82526040808220829055600d90925220805460ff191690556014805480610cb857634e487b7160e01b600052603160045260246000fd5b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610ce881613755565b915050610b9a565b5050565b6000610d01338484611e7b565b5060015b92915050565b6000546001600160a01b03163314610d355760405162461bcd60e51b8152600401610b2690613642565b61271081600154610d46919061371f565b610d5091906136ff565b60085550565b6000610d63848484611f9f565b610db58433610db085604051806060016040528060288152602001613795602891396001600160a01b038a166000908152600c60209081526040808320338452909152902054919061265c565b611e7b565b5060015b9392505050565b6000546001600160a01b03163314610dea5760405162461bcd60e51b8152600401610b2690613642565b602555565b6000546001600160a01b03163314610e195760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b0381166000908152600d602052604090205460ff1615610e825760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610b26565b6001600160a01b0381166000908152600a602052604090205415610edc576001600160a01b0381166000908152600a6020526040902054610ec290610fd6565b6001600160a01b0382166000908152600b60205260409020555b6001600160a01b03166000818152600d60205260408120805460ff191660019081179091556014805491820181559091527fce6d7b5282bd9a3661ae061feed1dbda4e52ab073b1f9285be6e155d9c38d4ec0180546001600160a01b0319169091179055565b600554600090610f8690610f5e906001600160a01b031661182c565b600454610f8090610f77906001600160a01b031661182c565b60015490612688565b90612688565b905090565b6000546001600160a01b03163314610fb55760405162461bcd60e51b8152600401610b2690613642565b61271081600154610fc6919061371f565b610fd091906136ff565b60075550565b600060025482111561103d5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b6064820152608401610b26565b6000611047612694565b9050610db981846136ff565b336000818152600c602090815260408083206001600160a01b03871684529091528120549091610d01918590610db09086906136e7565b6000546001600160a01b031633146110b45760405162461bcd60e51b8152600401610b2690613642565b601f92909255602055602155565b336000818152600d602052604090205460ff16156111375760405162461bcd60e51b815260206004820152602c60248201527f4578636c75646564206164647265737365732063616e6e6f742063616c6c207460448201526b3434b990333ab731ba34b7b760a11b6064820152608401610b26565b600061114683600160006126b7565b80516001600160a01b0384166000908152600a602052604090205491925061116e9190612688565b6001600160a01b0383166000908152600a6020526040902055805160025461119591612688565b600255603780548491906000906111ad9084906136e7565b9091555050505050565b6000546001600160a01b031633146111e15760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b03166000908152601060205260409020805460ff1916911515919091179055565b600060015483111561125d5760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610b26565b8161127b57600061127184600160006126b7565b519150610d059050565b600061128a84600160006126b7565b602001519150610d059050565b6000546001600160a01b031633146112c15760405162461bcd60e51b8152600401610b2690613642565b602991909155602a55565b6000546001600160a01b031633146112f65760405162461bcd60e51b8152600401610b2690613642565b620186a081600154611308919061371f565b61131291906136ff565b60095550565b6000546001600160a01b031633146113425760405162461bcd60e51b8152600401610b2690613642565b6034839055603582905560368190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a1505050565b6000546001600160a01b031633146113a95760405162461bcd60e51b8152600401610b2690613642565b6026805461ff00191661010084151502179055600154620186a0906113cf90839061371f565b6113d991906136ff565b6027555050565b6000546001600160a01b0316331461140a5760405162461bcd60e51b8152600401610b2690613642565b602b805461ffff191692151561ff0019169290921761010060ff9290921691909102179055565b6000546001600160a01b0316331461145b5760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b03166000908152601160205260409020805460ff1916911515919091179055565b6001600160a01b0381166000908152600b6020908152604080832054600a909252822054610d05919061373e565b6000546001600160a01b031633146114db5760405162461bcd60e51b8152600401610b2690613642565b6031839055603282905560338190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a1505050565b6000546001600160a01b031633146115425760405162461bcd60e51b8152600401610b2690613642565b61271081600154611553919061371f565b61155d91906136ff565b60065550565b6000546001600160a01b0316331461158d5760405162461bcd60e51b8152600401610b2690613642565b6001805461159a916126fc565b600655600180546115aa916126fc565b600755565b6000546001600160a01b031633146115d95760405162461bcd60e51b8152600401610b2690613642565b6028805460ff19166001179055565b6000546001600160a01b031633146116125760405162461bcd60e51b8152600401610b2690613642565b601b546001600160a01b03828116911614156116655760405162461bcd60e51b815260206004820152601260248201527115d85b1b195d08185b1c9958591e481cd95d60721b6044820152606401610b26565b601b80546001600160a01b039092166001600160a01b031990921682179055600052600e602052565b6000546001600160a01b031633146116b85760405162461bcd60e51b8152600401610b2690613642565b601c80546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031633146117045760405162461bcd60e51b8152600401610b2690613642565b6040516370a0823160e01b81523060048201526000906001600160a01b038616906370a0823190602401602060405180830381600087803b15801561174857600080fd5b505af115801561175c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611780919061353a565b90506001600160a01b03851663a9059cbb856117a6856117a086896126fc565b90612708565b6040516001600160e01b031960e085901b1681526001600160a01b0390921660048301526024820152604401602060405180830381600087803b1580156117ec57600080fd5b505af1158015611800573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611824919061349a565b505050505050565b6001600160a01b0381166000908152600d602052604081205460ff161561186957506001600160a01b03166000908152600b602052604090205490565b6001600160a01b0382166000908152600a6020526040902054610d0590610fd6565b6000546001600160a01b031633146118b55760405162461bcd60e51b8152600401610b2690613642565b6118bf6000612714565b565b6000546001600160a01b031633146118eb5760405162461bcd60e51b8152600401610b2690613642565b601b80546001600160a01b03199081166001600160a01b0396871617909155601a8054821693861693909317909255601980548316938516939093179092556018805490911691909216179055565b6000546001600160a01b031633146119645760405162461bcd60e51b8152600401610b2690613642565b602d805461ffff191692151561ff0019169290921761010060ff9290921691909102179055565b6000546001600160a01b031633146119b55760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b03919091166000908152600e60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a0a5760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b03919091166000908152600f60205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611a5f5760405162461bcd60e51b8152600401610b2690613642565b602492909255602355601e55565b6000610d013384610db0856040518060600160405280602581526020016137bd60259139336000908152600c602090815260408083206001600160a01b038d168452909152902054919061265c565b6000610d01338484611f9f565b6000546001600160a01b03163314611af35760405162461bcd60e51b8152600401610b2690613642565b601d5447906001600160a01b03166108fc611b1360646117a085876126fc565b6040518115909202916000818181858888f19350505050158015611b3b573d6000803e3d6000fd5b505050565b6000546001600160a01b03163314611b6a5760405162461bcd60e51b8152600401610b2690613642565b476000611b7b836117a084876126fc565b90506000611b9960646117a0601f54856126fc90919063ffffffff16565b90506000611bb760646117a0602054866126fc90919063ffffffff16565b90506000611bd560646117a0602154876126fc90919063ffffffff16565b601a546025546040519293506000926001600160a01b0390921691869084818181858888f193505050503d8060008114611c2b576040519150601f19603f3d011682016040523d82523d6000602084013e611c30565b606091505b50506018546025546040519293506001600160a01b039091169185906000818181858888f193505050503d8060008114611c86576040519150601f19603f3d011682016040523d82523d6000602084013e611c8b565b606091505b50506019546025546040519293506001600160a01b039091169184906000818181858888f193505050503d8060008114611ce1576040519150601f19603f3d011682016040523d82523d6000602084013e611ce6565b606091505b5050505050505050505050565b6000546001600160a01b03163314611d1d5760405162461bcd60e51b8152600401610b2690613642565b601580546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b03163314611d695760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b03919091166000908152601360205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611dbe5760405162461bcd60e51b8152600401610b2690613642565b6001600160a01b038116611e235760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201526564647265737360d01b6064820152608401610b26565b611e2c81612714565b50565b6000546001600160a01b03163314611e595760405162461bcd60e51b8152600401610b2690613642565b601780546001600160a01b0319166001600160a01b0392909216919091179055565b6001600160a01b038316611edd5760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f206164646044820152637265737360e01b6064820152608401610b26565b6001600160a01b038216611f3e5760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f206164647265604482015261737360f01b6064820152608401610b26565b6001600160a01b038381166000818152600c602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b0383166120035760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f206164604482015264647265737360d81b6064820152608401610b26565b6001600160a01b0382166120655760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201526265737360e81b6064820152608401610b26565b600081116120c75760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d7573742062652067726561746572206044820152687468616e207a65726f60b81b6064820152608401610b26565b6120d08361182c565b8111156121395760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f7265206044820152707468616e20796f75722062616c616e636560781b6064820152608401610b26565b6001600160a01b03831660009081526010602052604090205460ff1615801561217b57506001600160a01b03821660009081526010602052604090205460ff16155b156121b85760285460ff166121b85760405162461bcd60e51b81526020600482015260036024820152624c464760e81b6044820152606401610b26565b6001600160a01b03821660009081526013602052604090205460ff161580156121fa57506001600160a01b03831660009081526010602052604090205460ff16155b801561220f57506001600160a01b0382163014155b801561222957506004546001600160a01b03838116911614155b801561224357506016546001600160a01b03838116911614155b801561225d57506017546001600160a01b03838116911614155b156122c7576007548161226f8461182c565b61227991906136e7565b11156122c75760405162461bcd60e51b815260206004820152601e60248201527f45786365656473206d6178696d756d2077616c6c657420616d6f756e742e00006044820152606401610b26565b6016546001600160a01b038481169116148015906122e75750602b5460ff165b801561230c57506001600160a01b03831660009081526012602052604090205460ff16155b156123a3576001600160a01b0383166000908152602c602052604090205442116123745760405162461bcd60e51b815260206004820152601960248201527813dd5d1cda5919481bd988151a5b5948105b1b1bdd1b595b9d603a1b6044820152606401610b26565b602b5461238990610100900460ff16426136e7565b6001600160a01b0384166000908152602c60205260409020555b6016546001600160a01b0384811691161480156123c25750602d5460ff165b80156123e757506001600160a01b03821660009081526012602052604090205460ff16155b1561247e576001600160a01b0382166000908152602e6020526040902054421161244f5760405162461bcd60e51b815260206004820152601960248201527813dd5d1cda5919481bd988151a5b5948105b1b1bdd1b595b9d603a1b6044820152606401610b26565b602d5461246490610100900460ff16426136e7565b6001600160a01b0383166000908152602e60205260409020555b612489838284612764565b6016546124a7906001600160a01b03858116911614158483856127f0565b6016546001600160a01b03848116911614156124e757602f546124cd9060ff16426136e7565b6001600160a01b0383166000908152603060205260409020555b60006124f23061182c565b90506000602754612514602a546117a0602954876126fc90919063ffffffff16565b1161253757612534602a546117a0602954866126fc90919063ffffffff16565b90505b602754612555602a546117a0602954876126fc90919063ffffffff16565b111561256057506027545b60095460265482841015918510159060ff161580156125865750602654610100900460ff165b801561258f5750815b80156125a957506016546001600160a01b03888116911614155b80156125b25750805b80156125d757506001600160a01b03871660009081526011602052604090205460ff16155b156125e5576125e5836128ab565b6016546000906001600160a01b0388811691161415612602575060015b6001600160a01b0388166000908152600e60205260409020546126529089908990899060ff168061264b57506001600160a01b038b166000908152600e602052604090205460ff165b15856129da565b5050505050505050565b600081848411156126805760405162461bcd60e51b8152600401610b2691906135ef565b505050900390565b6000610db9828461373e565b60008060006126a1612c11565b90925090506126b081836136ff565b9250505090565b6126bf6132b8565b6126ca848484612dcc565b90506126df8185856126da612694565b612f17565b608086015260608501526040840152602083015281529392505050565b6000610db9828461371f565b6000610db982846136ff565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6006548211158061278d57506001600160a01b0383166000908152600f602052604090205460ff165b806127b057506001600160a01b03811660009081526010602052604090205460ff165b611b3b5760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b26565b83801561281457506001600160a01b03831660009081526030602052604090205442115b156128a5576008548211158061284257506001600160a01b0383166000908152600f602052604090205460ff165b8061286557506001600160a01b03811660009081526010602052604090205460ff165b6128a55760405162461bcd60e51b8152602060048201526011602482015270151608131a5b5a5d08115e18d959591959607a1b6044820152606401610b26565b50505050565b6026805460ff19166001179055602454601e54602354600092916128ce916136e7565b6128d891906136e7565b6128e390600261371f565b9050600081602354846128f6919061371f565b61290091906136ff565b9050600061290e828561373e565b90504761291a82612fa4565b6000612926824761373e565b9050600060235486612938919061373e565b61294290836136ff565b9050600060235482612954919061371f565b905080156129665761296686826130b3565b601e5460009061297784600261371f565b612981919061371f565b905080156129c557601b546040516001600160a01b039091169082156108fc029083906000818181858888f193505050501580156129c3573d6000803e3d6000fd5b505b50506026805460ff1916905550505050505050565b60006129e78484846126b7565b6001600160a01b0387166000908152600d602052604090205490915060ff1615612a49576001600160a01b0386166000908152600b6020526040902054612a2f90859061373e565b6001600160a01b0387166000908152600b60205260409020555b6001600160a01b0385166000908152600d602052604090205460ff1615612aac5760a08101516001600160a01b0386166000908152600b6020526040902054612a9291906136e7565b6001600160a01b0386166000908152600b60205260409020555b80516001600160a01b0387166000908152600a6020526040902054612ad1919061373e565b6001600160a01b038088166000908152600a602090815260408083209490945584015191881681529190912054612b0891906136e7565b6001600160a01b0386166000908152600a6020526040908190209190915581015160c0820151612b389190613176565b612b4b81608001518261010001516131ab565b612b5d81606001518260e00151613221565b846001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360a00151604051612ba691815260200190565b60405180910390a3306001600160a01b0316866001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e00151846101000151612bf891906136e7565b60405190815260200160405180910390a3505050505050565b6002546001546000918291825b601454811015612d9b5782600a600060148481548110612c4e57634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612cc7575081600b600060148481548110612ca057634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612cdd57600254600154945094505050509091565b600a600060148381548110612d0257634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054612d31908461373e565b9250600b600060148381548110612d5857634e487b7160e01b600052603260045260246000fd5b60009182526020808320909101546001600160a01b03168352820192909252604001902054612d87908361373e565b915080612d9381613755565b915050612c1e565b50600154600254612dac91906136ff565b821015612dc3576002546001549350935050509091565b90939092509050565b612dd46132b8565b82612de55760a08101849052610db9565b8115612e80576034546103e890612dfc908661371f565b612e0691906136ff565b60c08201526035546103e890612e1c908661371f565b612e2691906136ff565b60e08201526036546103e890612e3c908661371f565b612e4691906136ff565b610100820181905260e082015160c0830151612e62908761373e565b612e6c919061373e565b612e76919061373e565b60a0820152610db9565b6031546103e890612e91908661371f565b612e9b91906136ff565b60c08201526032546103e890612eb1908661371f565b612ebb91906136ff565b60e08201526033546103e890612ed1908661371f565b612edb91906136ff565b610100820181905260e082015160c0830151612ef7908761373e565b612f01919061373e565b612f0b919061373e565b60a08201529392505050565b600080808080612f27868961371f565b945086612f3f57508392506000915081905080612f99565b858960c00151612f4f919061371f565b9250858960e00151612f61919061371f565b915085896101000151612f74919061371f565b90508082612f82858861373e565b612f8c919061373e565b612f96919061373e565b93505b945094509450945094565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612fe757634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260035482519116908290600190811061302657634e487b7160e01b600052603260045260246000fd5b6001600160a01b03928316602091820292909201015260155461304c9130911684611e7b565b60155460405163791ac94760e01b81526001600160a01b039091169063791ac94790613085908590600090869030904290600401613677565b600060405180830381600087803b15801561309f57600080fd5b505af1158015611824573d6000803e3d6000fd5b6015546130cb9030906001600160a01b031684611e7b565b60155460175460405163f305d71960e01b81523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015291169063f305d71990839060c4016060604051808303818588803b15801561313657600080fd5b505af115801561314a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061316f91906135c2565b5050505050565b8160026000828254613188919061373e565b9091555050603780548291906000906131a29084906136e7565b90915550505050565b80603760020160008282546131c091906136e7565b9091555050306000908152600d602052604090205460ff161561320257306000908152600b6020526040812080548392906131fc9084906136e7565b90915550505b306000908152600a6020526040812080548492906131a29084906136e7565b806037600101600082825461323691906136e7565b9091555050601c546001600160a01b03166000908152600d602052604090205460ff161561328e57601c546001600160a01b03166000908152600b6020526040812080548392906132889084906136e7565b90915550505b601c546001600160a01b03166000908152600a6020526040812080548492906131a29084906136e7565b6040518061012001604052806000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b80356001600160a01b038116811461331b57600080fd5b919050565b600060208284031215613331578081fd5b610db982613304565b6000806040838503121561334c578081fd5b61335583613304565b915061336360208401613304565b90509250929050565b60008060008060808587031215613381578182fd5b61338a85613304565b935061339860208601613304565b92506133a660408601613304565b91506133b460608601613304565b905092959194509250565b6000806000606084860312156133d3578283fd5b6133dc84613304565b92506133ea60208501613304565b9150604084013590509250925092565b6000806000806080858703121561340f578384fd5b61341885613304565b935061342660208601613304565b93969395505050506040820135916060013590565b6000806040838503121561344d578182fd5b61345683613304565b9150602083013561346681613786565b809150509250929050565b60008060408385031215613483578182fd5b61348c83613304565b946020939093013593505050565b6000602082840312156134ab578081fd5b8151610db981613786565b600080604083850312156134c8578182fd5b823561335581613786565b600080604083850312156134e5578182fd5b823561348c81613786565b60008060408385031215613502578182fd5b823561350d81613786565b9150602083013560ff81168114613466578182fd5b600060208284031215613533578081fd5b5035919050565b60006020828403121561354b578081fd5b5051919050565b60008060408385031215613564578182fd5b82359150602083013561346681613786565b60008060408385031215613588578182fd5b50508035926020909101359150565b6000806000606084860312156135ab578081fd5b505081359360208301359350604090920135919050565b6000806000606084860312156135d6578081fd5b8351925060208401519150604084015190509250925092565b6000602080835283518082850152825b8181101561361b578581018301518582016040015282016135ff565b8181111561362c5783604083870101525b50601f01601f1916929092016040019392505050565b6020808252818101527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604082015260600190565b600060a082018783526020878185015260a0604085015281875180845260c0860191508289019350845b818110156136c65784516001600160a01b0316835293830193918301916001016136a1565b50506001600160a01b03969096166060850152505050608001529392505050565b600082198211156136fa576136fa613770565b500190565b60008261371a57634e487b7160e01b81526012600452602481fd5b500490565b600081600019048311821515161561373957613739613770565b500290565b60008282101561375057613750613770565b500390565b600060001982141561376957613769613770565b5060010190565b634e487b7160e01b600052601160045260246000fd5b8015158114611e2c57600080fdfe45524332303a207472616e7366657220616d6f756e74206578636565647320616c6c6f77616e636545524332303a2064656372656173656420616c6c6f77616e63652062656c6f77207a65726fa2646970667358221220db51c509fe534ac5433f2d265b7f5d604c7514d5816383db3196cc37f029273964736f6c63430008040033

Deployed ByteCode Sourcemap

10430:21633:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;19563:99;;;;;;;;;;-1:-1:-1;19639:11:0;:15;19563:99;;;14522:25:1;;;14510:2;14495:18;19563:99:0;;;;;;;;18494:466;;;;;;;;;;-1:-1:-1;18494:466:0;;;;;:::i;:::-;;:::i;:::-;;15000:83;;;;;;;;;;-1:-1:-1;15070:5:0;;;;;;;;;;;-1:-1:-1;;;15070:5:0;;;;15000:83;;;;15070:5;15000:83;:::i;15908:161::-;;;;;;;;;;-1:-1:-1;15908:161:0;;;;;:::i;:::-;;:::i;:::-;;;6898:14:1;;6891:22;6873:41;;6861:2;6846:18;15908:161:0;6828:92:1;11176:47:0;;;;;;;;;;;;;;;;15273:95;;;;;;;;;;-1:-1:-1;15353:7:0;;15273:95;;27532:105;;;;;;;;;;-1:-1:-1;27532:105:0;;;;;:::i;:::-;;:::i;16077:313::-;;;;;;;;;;-1:-1:-1;16077:313:0;;;;;:::i;:::-;;:::i;26882:78::-;;;;;;;;;;-1:-1:-1;26882:78:0;;;;;:::i;:::-;;:::i;18147:339::-;;;;;;;;;;-1:-1:-1;18147:339:0;;;;;:::i;:::-;;:::i;31881:137::-;;;;;;;;;;;;;:::i;26762:112::-;;;;;;;;;;-1:-1:-1;26762:112:0;;;;;:::i;:::-;;:::i;17891:248::-;;;;;;;;;;-1:-1:-1;17891:248:0;;;;;:::i;:::-;;:::i;15182:83::-;;;;;;;;;;-1:-1:-1;15182:83:0;;10679:1;15688:36:1;;15676:2;15661:18;15182:83:0;15643:87:1;16398:213:0;;;;;;;;;;-1:-1:-1;16398:213:0;;;;;:::i;:::-;;:::i;31715:158::-;;;;;;;;;;-1:-1:-1;31715:158:0;;;;;:::i;:::-;;:::i;17024:390::-;;;;;;;;;;-1:-1:-1;17024:390:0;;;;;:::i;:::-;;:::i;26649:105::-;;;;;;;;;;-1:-1:-1;26649:105:0;;;;;:::i;:::-;;:::i;17422:461::-;;;;;;;;;;-1:-1:-1;17422:461:0;;;;;:::i;:::-;;:::i;11230:47::-;;;;;;;;;;;;;;;;27177:119;;;;;;;;;;-1:-1:-1;27177:119:0;;;;;:::i;:::-;;:::i;31598:109::-;;;;;;;;;;-1:-1:-1;31598:109:0;;;;;:::i;:::-;;:::i;19194:230::-;;;;;;;;;;-1:-1:-1;19194:230:0;;;;;:::i;:::-;;:::i;31444:146::-;;;;;;;;;;-1:-1:-1;31444:146:0;;;;;:::i;:::-;;:::i;27758:118::-;;;;;;;;;;-1:-1:-1;27758:118:0;;;;;:::i;:::-;;:::i;27424:100::-;;;;;;;;;;-1:-1:-1;27424:100:0;;;;;:::i;:::-;;:::i;12278:23::-;;;;;;;;;;;;;;;;19793:134;;;;;;;;;;-1:-1:-1;19793:134:0;;;;;:::i;:::-;;:::i;18968:218::-;;;;;;;;;;-1:-1:-1;18968:218:0;;;;;:::i;:::-;;:::i;27304:112::-;;;;;;;;;;-1:-1:-1;27304:112:0;;;;;:::i;:::-;;:::i;27042:127::-;;;;;;;;;;;;;:::i;26968:66::-;;;;;;;;;;;;;:::i;29906:171::-;;;;;;;;;;-1:-1:-1;29906:171:0;;;;;:::i;:::-;;:::i;28010:77::-;;;;;;;;;;-1:-1:-1;28010:77:0;;;;;:::i;:::-;;:::i;29221:228::-;;;;;;;;;;-1:-1:-1;29221:228:0;;;;;:::i;:::-;;:::i;15376:198::-;;;;;;;;;;-1:-1:-1;15376:198:0;;;;;:::i;:::-;;:::i;8912:94::-;;;;;;;;;;;;;:::i;30173:192::-;;;;;;;;;;-1:-1:-1;30173:192:0;;;;;:::i;:::-;;:::i;27884:118::-;;;;;;;;;;-1:-1:-1;27884:118:0;;;;;:::i;:::-;;:::i;11111:58::-;;;;;;;;;;;;;;;;11050:54;;;;;;;;;;;;;;;;30739:103;;;;;;;;;;-1:-1:-1;30739:103:0;;;;;:::i;:::-;;:::i;16896:120::-;;;;;;;;;;-1:-1:-1;16896:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;16988:20:0;16964:4;16988:20;;;:11;:20;;;;;;;;;16896:120;19670:115;;;;;;;;;;-1:-1:-1;19670:115:0;;;;;:::i;:::-;-1:-1:-1;;;;;19762:15:0;19735:7;19762:15;;;:7;:15;;;;;;;19670:115;26277:105;;;;;;;;;;-1:-1:-1;26277:105:0;;;;;:::i;:::-;;:::i;12203:45::-;;;;;;;;;;;;;;;;30373:186;;;;;;;;;;-1:-1:-1;30373:186:0;;;;;:::i;:::-;;:::i;16619:269::-;;;;;;;;;;-1:-1:-1;16619:269:0;;;;;:::i;:::-;;:::i;11796:19::-;;;;;;;;;;-1:-1:-1;11796:19:0;;;;-1:-1:-1;;;;;11796:19:0;;;;;;-1:-1:-1;;;;;5798:32:1;;;5780:51;;5768:2;5753:18;11796:19:0;5735:102:1;15582:167:0;;;;;;;;;;-1:-1:-1;15582:167:0;;;;;:::i;:::-;;:::i;30567:164::-;;;;;;;;;;-1:-1:-1;30567:164:0;;;;;:::i;:::-;;:::i;30850:586::-;;;;;;;;;;-1:-1:-1;30850:586:0;;;;;:::i;:::-;;:::i;12174:22::-;;;;;;;;;;-1:-1:-1;12174:22:0;;;;;;;;;;;26158:111;;;;;;;;;;-1:-1:-1;26158:111:0;;;;;:::i;:::-;;:::i;27645:105::-;;;;;;;;;;-1:-1:-1;27645:105:0;;;;;:::i;:::-;;:::i;15757:143::-;;;;;;;;;;-1:-1:-1;15757:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;15865:18:0;;;15838:7;15865:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;15757:143;9014:192;;;;;;;;;;-1:-1:-1;9014:192:0;;;;;:::i;:::-;;:::i;30085:80::-;;;;;;;;;;-1:-1:-1;30085:80:0;;;;;:::i;:::-;;:::i;18494:466::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;;;;;;;;;-1:-1:-1;;;;;18580:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;18572:56;;;::::0;-1:-1:-1;;;18572:56:0;;10834:2:1;18572:56:0::1;::::0;::::1;10816:21:1::0;10873:2;10853:18;;;10846:30;10912:25;10892:18;;;10885:53;10955:18;;18572:56:0::1;10806:173:1::0;18572:56:0::1;18644:9;18639:314;18663:9;:16:::0;18659:20;::::1;18639:314;;;18721:7;-1:-1:-1::0;;;;;18705:23:0::1;:9;18715:1;18705:12;;;;;;-1:-1:-1::0;;;18705:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;18705:12:0::1;:23;18701:241;;;18764:9;18774:16:::0;;:20:::1;::::0;18793:1:::1;::::0;18774:20:::1;:::i;:::-;18764:31;;;;;;-1:-1:-1::0;;;18764:31:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;18749:9:::1;:12:::0;;-1:-1:-1;;;;;18764:31:0;;::::1;::::0;18759:1;;18749:12;::::1;;;-1:-1:-1::0;;;18749:12:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;18749:46:0::1;-1:-1:-1::0;;;;;18749:46:0;;::::1;;::::0;;18814:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;18853:11:::1;:20:::0;;;;:28;;-1:-1:-1;;18853:28:0::1;::::0;;18900:9:::1;:15:::0;;;::::1;;-1:-1:-1::0;;;18900:15:0::1;;;;;;;;;;::::0;;;::::1;::::0;;;;-1:-1:-1;;18900:15:0;;;;;-1:-1:-1;;;;;;18900:15:0::1;::::0;;;;;18639:314:::1;18494:466:::0;:::o;18701:241::-:1;18681:3:::0;::::1;::::0;::::1;:::i;:::-;;;;18639:314;;;;18494:466:::0;:::o;15908:161::-;15983:4;16000:39;3695:10;16023:7;16032:6;16000:8;:39::i;:::-;-1:-1:-1;16057:4:0;15908:161;;;;;:::o;27532:105::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;27624:5:::1;27614:6;27604:7;;:16;;;;:::i;:::-;27603:26;;;;:::i;:::-;27595:5;:34:::0;-1:-1:-1;27532:105:0:o;16077:313::-;16175:4;16192:36;16202:6;16210:9;16221:6;16192:9;:36::i;:::-;16239:121;16248:6;3695:10;16270:89;16308:6;16270:89;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;16270:19:0;;;;;;:11;:19;;;;;;;;3695:10;16270:33;;;;;;;;;;:37;:89::i;:::-;16239:8;:121::i;:::-;-1:-1:-1;16378:4:0;16077:313;;;;;;:::o;26882:78::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;26942:3:::1;:10:::0;26882:78::o;18147:339::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;18236:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;18235:21;18227:61;;;::::0;-1:-1:-1;;;18227:61:0;;10478:2:1;18227:61:0::1;::::0;::::1;10460:21:1::0;10517:2;10497:18;;;10490:30;10556:29;10536:18;;;10529:57;10603:18;;18227:61:0::1;10450:177:1::0;18227:61:0::1;-1:-1:-1::0;;;;;18302:16:0;::::1;18321:1;18302:16:::0;;;:7:::1;:16;::::0;;;;;:20;18299:108:::1;;-1:-1:-1::0;;;;;18378:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;18358:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;18339:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;18299:108:::1;-1:-1:-1::0;;;;;18417:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;18417:27:0::1;18440:4;18417:27:::0;;::::1;::::0;;;18455:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;18455:23:0::1;::::0;;::::1;::::0;;18147:339::o;31881:137::-;32004:4;;31934:7;;31961:49;;31994:15;;-1:-1:-1;;;;;32004:4:0;31994:9;:15::i;:::-;31983:4;;31961:28;;31973:15;;-1:-1:-1;;;;;31983:4:0;31973:9;:15::i;:::-;31961:7;;;:11;:28::i;:::-;:32;;:49::i;:::-;31954:56;;31881:137;:::o;26762:112::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;26861:5:::1;26852;26842:7;;:15;;;;:::i;:::-;26841:25;;;;:::i;:::-;26823:15;:43:::0;-1:-1:-1;26762:112:0:o;17891:248::-;17957:7;17996;;17985;:18;;17977:73;;;;-1:-1:-1;;;17977:73:0;;9257:2:1;17977:73:0;;;9239:21:1;9296:2;9276:18;;;9269:30;9335:34;9315:18;;;9308:62;-1:-1:-1;;;9386:18:1;;;9379:40;9436:19;;17977:73:0;9229:232:1;17977:73:0;18061:19;18084:10;:8;:10::i;:::-;18061:33;-1:-1:-1;18112:19:0;18061:33;18112:7;:19;:::i;16398:213::-;3695:10;16486:4;16535:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16535:34:0;;;;;;;;;;16486:4;;16503:78;;16526:7;;16535:45;;16570:10;;16535:45;:::i;31715:158::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;31807:4:::1;:12:::0;;;;31830:4:::1;:12:::0;31853:4:::1;:12:::0;31715:158::o;17024:390::-;3695:10;17076:14;17125:19;;;:11;:19;;;;;;;;17124:20;17116:77;;;;-1:-1:-1;;;17116:77:0;;14165:2:1;17116:77:0;;;14147:21:1;14204:2;14184:18;;;14177:30;14243:34;14223:18;;;14216:62;-1:-1:-1;;;14294:18:1;;;14287:42;14346:19;;17116:77:0;14137:234:1;17116:77:0;17204:28;17235:32;17246:7;17255:4;17261:5;17235:10;:32::i;:::-;17316:9;;-1:-1:-1;;;;;17296:15:0;;17316:9;17296:15;;;:7;:15;;;;;;17204:63;;-1:-1:-1;17296:30:0;;:15;:19;:30::i;:::-;-1:-1:-1;;;;;17278:15:0;;;;;;:7;:15;;;;;:48;17359:9;;17347:7;;:22;;:11;:22::i;:::-;17337:7;:32;17380:11;:26;;17399:7;;17380:11;:15;;:26;;17399:7;;17380:26;:::i;:::-;;;;-1:-1:-1;;;;;17024:390:0:o;26649:105::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26725:10:0::1;;::::0;;;:4:::1;:10;::::0;;;;:21;;-1:-1:-1;;26725:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26649:105::o;17422:461::-;17512:7;17551;;17540;:18;;17532:62;;;;-1:-1:-1;;;17532:62:0;;11186:2:1;17532:62:0;;;11168:21:1;11225:2;11205:18;;;11198:30;11264:33;11244:18;;;11237:61;11315:18;;17532:62:0;11158:181:1;17532:62:0;17610:17;17605:271;;17644:28;17675:32;17686:7;17695:4;17701:5;17675:10;:32::i;:::-;17729:9;;-1:-1:-1;17722:16:0;;-1:-1:-1;17722:16:0;17605:271;17771:28;17802:32;17813:7;17822:4;17828:5;17802:10;:32::i;:::-;17856:17;;;;-1:-1:-1;17849:24:0;;-1:-1:-1;17849:24:0;27177:119;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;27255:3:::1;:11:::0;;;;27277:3:::1;:11:::0;27177:119::o;31598:109::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;31693:6:::1;31681:7;31671;;:17;;;;:::i;:::-;31669:30;;;;:::i;:::-;31662:4;:37:::0;-1:-1:-1;31598:109:0:o;19194:230::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;19283:12:::1;:23:::0;;;19317:22;:30;;;19358:22;:29;;;19403:13:::1;::::0;::::1;::::0;19283:16:::1;::::0;19403:13:::1;19194:230:::0;;;:::o;31444:146::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;31522:3:::1;:14:::0;;-1:-1:-1;;31522:14:0::1;;::::0;::::1;;;;::::0;;-1:-1:-1;31554:7:0;31576:6:::1;::::0;31554:17:::1;::::0;31564:7;;31554:17:::1;:::i;:::-;31552:30;;;;:::i;:::-;31547:2;:35:::0;-1:-1:-1;;31444:146:0:o;27758:118::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;27831:4:::1;:14:::0;;-1:-1:-1;;27856:12:0;27831:14;::::1;;-1:-1:-1::0;;27856:12:0;;;;;27831:14:::1;;27856:12:::0;;;::::1;::::0;;;::::1;;::::0;;27758:118::o;27424:100::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27497:11:0::1;;::::0;;;:5:::1;:11;::::0;;;;:19;;-1:-1:-1;;27497:19:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27424:100::o;19793:134::-;-1:-1:-1;;;;;19904:15:0;;19859:7;19904:15;;;:7;:15;;;;;;;;;19886:7;:15;;;;;;:33;;19904:15;19886:33;:::i;18968:218::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;19057:8:::1;:19:::0;;;19087:18;:26;;;19124:18;:25;;;19165:13:::1;::::0;::::1;::::0;19057:12:::1;::::0;19165:13:::1;18968:218:::0;;;:::o;27304:112::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;27403:5:::1;27393:6;27383:7;;:16;;;;:::i;:::-;27382:26;;;;:::i;:::-;27367:12;:41:::0;-1:-1:-1;27304:112:0:o;27042:127::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;27116:1:::1;27104:7:::0;;:14:::1;::::0;:11:::1;:14::i;:::-;27089:12;:29:::0;27159:1:::1;27147:7:::0;;:14:::1;::::0;:11:::1;:14::i;:::-;27129:15;:32:::0;27042:127::o;26968:66::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;27016:3:::1;:10:::0;;-1:-1:-1;;27016:10:0::1;27022:4;27016:10;::::0;;26968:66::o;29906:171::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;29981:4:::1;::::0;-1:-1:-1;;;;;29981:17:0;;::::1;:4:::0;::::1;:17;;29973:48;;;::::0;-1:-1:-1;;;29973:48:0;;12648:2:1;29973:48:0::1;::::0;::::1;12630:21:1::0;12687:2;12667:18;;;12660:30;-1:-1:-1;;;12706:18:1;;;12699:48;12764:18;;29973:48:0::1;12620:168:1::0;29973:48:0::1;30032:4;:16:::0;;-1:-1:-1;;;;;30032:16:0;;::::1;-1:-1:-1::0;;;;;;30032:16:0;;::::1;::::0;::::1;::::0;;:4:::1;30059:10:::0;:4:::1;:10;::::0;29906:171::o;28010:77::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;28069:4:::1;:10:::0;;-1:-1:-1;;;;;;28069:10:0::1;-1:-1:-1::0;;;;;28069:10:0;;;::::1;::::0;;;::::1;::::0;;28010:77::o;29221:228::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;29341:36:::1;::::0;-1:-1:-1;;;29341:36:0;;29371:4:::1;29341:36;::::0;::::1;5780:51:1::0;29326:12:0::1;::::0;-1:-1:-1;;;;;29341:21:0;::::1;::::0;::::1;::::0;5753:18:1;;29341:36:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;29326:51:::0;-1:-1:-1;;;;;;29388:20:0;::::1;;29409:4:::0;29415:25:::1;29434:5:::0;29415:14:::1;29326:51:::0;29424:4;29415:8:::1;:14::i;:::-;:18:::0;::::1;:25::i;:::-;29388:53;::::0;-1:-1:-1;;;;;;29388:53:0::1;::::0;;;;;;-1:-1:-1;;;;;6034:32:1;;;29388:53:0::1;::::0;::::1;6016:51:1::0;6083:18;;;6076:34;5989:18;;29388:53:0::1;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8895:1;29221:228:::0;;;;:::o;15376:198::-;-1:-1:-1;;;;;15466:20:0;;15442:7;15466:20;;;:11;:20;;;;;;;;15462:49;;;-1:-1:-1;;;;;;15495:16:0;;;;;:7;:16;;;;;;;15376:198::o;15462:49::-;-1:-1:-1;;;;;15549:16:0;;;;;;:7;:16;;;;;;15529:37;;:19;:37::i;8912:94::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;8977:21:::1;8995:1;8977:9;:21::i;:::-;8912:94::o:0;30173:192::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;30279:4:::1;:12:::0;;-1:-1:-1;;;;;;30279:12:0;;::::1;-1:-1:-1::0;;;;;30279:12:0;;::::1;;::::0;;;30302:4:::1;:11:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;30324:4:::1;:11:::0;;;::::1;::::0;;::::1;::::0;;;::::1;::::0;;;30346:4:::1;:11:::0;;;;::::1;::::0;;;::::1;;::::0;;30173:192::o;27884:118::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;27957:4:::1;:14:::0;;-1:-1:-1;;27982:12:0;27957:14;::::1;;-1:-1:-1::0;;27982:12:0;;;;;27957:14:::1;;27982:12:::0;;;::::1;::::0;;;::::1;;::::0;;27884:118::o;30739:103::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;30813:12:0;;;::::1;;::::0;;;:4:::1;:12;::::0;;;;:21;;-1:-1:-1;;30813:21:0::1;::::0;::::1;;::::0;;;::::1;::::0;;30739:103::o;26277:105::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;26352:13:0;;;::::1;;::::0;;;:5:::1;:13;::::0;;;;:22;;-1:-1:-1;;26352:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;26277:105::o;30373:186::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;30484:2:::1;:15:::0;;;;30510:2:::1;:15:::0;30536:2:::1;:15:::0;30373:186::o;16619:269::-;16712:4;16729:129;3695:10;16752:7;16761:96;16800:15;16761:96;;;;;;;;;;;;;;;;;3695:10;16761:25;;;;:11;:25;;;;;;;;-1:-1:-1;;;;;16761:34:0;;;;;;;;;;;;:38;:96::i;15582:167::-;15660:4;15677:42;3695:10;15701:9;15712:6;15677:9;:42::i;30567:164::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;30682:3:::1;::::0;30642:21:::1;::::0;-1:-1:-1;;;;;30682:3:0::1;30674:49;30696:26;30718:3;30696:17;30642:21:::0;30710:2;30696:13:::1;:17::i;:26::-;30674:49;::::0;;::::1;::::0;;::::1;::::0;::::1;::::0;;;;;;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;8895:1;30567:164:::0;:::o;30850:586::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;30941:21:::1;30925:13;30990:23;31009:3:::0;30990:14:::1;30941:21:::0;31000:3;30990:9:::1;:14::i;:23::-;30973:40;;31024:14;31041:25;31062:3;31041:16;31052:4;;31041:6;:10;;:16;;;;:::i;:25::-;31024:42;;31077:14;31094:25;31115:3;31094:16;31105:4;;31094:6;:10;;:16;;;;:::i;:25::-;31077:42;;31130:14;31147:25;31168:3;31147:16;31158:4;;31147:6;:10;;:16;;;;:::i;:25::-;31212:4;::::0;31243:3:::1;::::0;31204:47:::1;::::0;31130:42;;-1:-1:-1;31184:15:0::1;::::0;-1:-1:-1;;;;;31212:4:0;;::::1;::::0;31230:6;;31184:15;31204:47;31184:15;31204:47;31230:6;31212:4;31243:3;31204:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;31286:4:0::1;::::0;31317:3:::1;::::0;31278:47:::1;::::0;31183:68;;-1:-1:-1;;;;;;31286:4:0;;::::1;::::0;31304:6;;31278:47:::1;::::0;;;31304:6;31286:4;31317:3;31278:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;31360:4:0::1;::::0;31391:3:::1;::::0;31352:47:::1;::::0;31262:63;;-1:-1:-1;;;;;;31360:4:0;;::::1;::::0;31378:6;;31352:47:::1;::::0;;;31378:6;31360:4;31391:3;31352:47:::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1::0;;;;;;;;;;;30850:586:0:o;26158:111::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;26227:6:::1;:34:::0;;-1:-1:-1;;;;;;26227:34:0::1;-1:-1:-1::0;;;;;26227:34:0;;;::::1;::::0;;;::::1;::::0;;26158:111::o;27645:105::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;27720:13:0;;;::::1;;::::0;;;:5:::1;:13;::::0;;;;:22;;-1:-1:-1;;27720:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;27645:105::o;9014:192::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;-1:-1:-1;;;;;9103:22:0;::::1;9095:73;;;::::0;-1:-1:-1;;;9095:73:0;;9668:2:1;9095:73:0::1;::::0;::::1;9650:21:1::0;9707:2;9687:18;;;9680:30;9746:34;9726:18;;;9719:62;-1:-1:-1;;;9797:18:1;;;9790:36;9843:19;;9095:73:0::1;9640:228:1::0;9095:73:0::1;9179:19;9189:8;9179:9;:19::i;:::-;9014:192:::0;:::o;30085:80::-;8735:7;8762:6;-1:-1:-1;;;;;8762:6:0;3695:10;8824:23;8816:68;;;;-1:-1:-1;;;8816:68:0;;;;;;;:::i;:::-;30147:3:::1;:10:::0;;-1:-1:-1;;;;;;30147:10:0::1;-1:-1:-1::0;;;;;30147:10:0;;;::::1;::::0;;;::::1;::::0;;30085:80::o;22995:335::-;-1:-1:-1;;;;;23088:19:0;;23080:68;;;;-1:-1:-1;;;23080:68:0;;13401:2:1;23080:68:0;;;13383:21:1;13440:2;13420:18;;;13413:30;13479:34;13459:18;;;13452:62;-1:-1:-1;;;13530:18:1;;;13523:34;13574:19;;23080:68:0;13373:226:1;23080:68:0;-1:-1:-1;;;;;23167:21:0;;23159:68;;;;-1:-1:-1;;;23159:68:0;;10075:2:1;23159:68:0;;;10057:21:1;10114:2;10094:18;;;10087:30;10153:34;10133:18;;;10126:62;-1:-1:-1;;;10204:18:1;;;10197:32;10246:19;;23159:68:0;10047:224:1;23159:68:0;-1:-1:-1;;;;;23238:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;23290:32;;14522:25:1;;;23290:32:0;;14495:18:1;23290:32:0;;;;;;;22995:335;;;:::o;23338:1787::-;-1:-1:-1;;;;;23426:18:0;;23418:68;;;;-1:-1:-1;;;23418:68:0;;12995:2:1;23418:68:0;;;12977:21:1;13034:2;13014:18;;;13007:30;13073:34;13053:18;;;13046:62;-1:-1:-1;;;13124:18:1;;;13117:35;13169:19;;23418:68:0;12967:227:1;23418:68:0;-1:-1:-1;;;;;23505:16:0;;23497:64;;;;-1:-1:-1;;;23497:64:0;;7735:2:1;23497:64:0;;;7717:21:1;7774:2;7754:18;;;7747:30;7813:34;7793:18;;;7786:62;-1:-1:-1;;;7864:18:1;;;7857:33;7907:19;;23497:64:0;7707:225:1;23497:64:0;23589:1;23580:6;:10;23572:64;;;;-1:-1:-1;;;23572:64:0;;12238:2:1;23572:64:0;;;12220:21:1;12277:2;12257:18;;;12250:30;12316:34;12296:18;;;12289:62;-1:-1:-1;;;12367:18:1;;;12360:39;12416:19;;23572:64:0;12210:231:1;23572:64:0;23665:15;23675:4;23665:9;:15::i;:::-;23655:6;:25;;23647:86;;;;-1:-1:-1;;;23647:86:0;;8839:2:1;23647:86:0;;;8821:21:1;8878:2;8858:18;;;8851:30;8917:34;8897:18;;;8890:62;-1:-1:-1;;;8968:18:1;;;8961:47;9025:19;;23647:86:0;8811:239:1;23647:86:0;-1:-1:-1;;;;;23748:10:0;;;;;;:4;:10;;;;;;;;23747:11;:24;;;;-1:-1:-1;;;;;;23763:8:0;;;;;;:4;:8;;;;;;;;23762:9;23747:24;23744:50;;;23781:3;;;;23773:19;;;;-1:-1:-1;;;23773:19:0;;11546:2:1;23773:19:0;;;11528:21:1;11585:1;11565:18;;;11558:29;-1:-1:-1;;;11603:18:1;;;11596:33;11646:18;;23773:19:0;11518:152:1;23773:19:0;-1:-1:-1;;;;;23808:9:0;;;;;;:5;:9;;;;;;;;23807:10;:25;;;;-1:-1:-1;;;;;;23822:10:0;;;;;;:4;:10;;;;;;;;23821:11;23807:25;:48;;;;-1:-1:-1;;;;;;23836:19:0;;23850:4;23836:19;;23807:48;:71;;;;-1:-1:-1;23873:4:0;;-1:-1:-1;;;;;23859:19:0;;;23873:4;;23859:19;;23807:71;:85;;;;-1:-1:-1;23888:4:0;;-1:-1:-1;;;;;23882:10:0;;;23888:4;;23882:10;;23807:85;:98;;;;-1:-1:-1;23902:3:0;;-1:-1:-1;;;;;23896:9:0;;;23902:3;;23896:9;;23807:98;23804:205;;;23957:15;;23946:6;23930:13;23940:2;23930:9;:13::i;:::-;:22;;;;:::i;:::-;23929:43;;23921:86;;;;-1:-1:-1;;;23921:86:0;;13806:2:1;23921:86:0;;;13788:21:1;13845:2;13825:18;;;13818:30;13884:32;13864:18;;;13857:60;13934:18;;23921:86:0;13778:180:1;23921:86:0;24030:4;;-1:-1:-1;;;;;24022:12:0;;;24030:4;;24022:12;;;;:20;;-1:-1:-1;24038:4:0;;;;24022:20;:37;;;;-1:-1:-1;;;;;;24047:12:0;;;;;;:6;:12;;;;;;;;24046:13;24022:37;24019:181;;;-1:-1:-1;;;;;24084:12:0;;;;;;:6;:12;;;;;;24099:15;-1:-1:-1;24076:68:0;;;;-1:-1:-1;;;24076:68:0;;8485:2:1;24076:68:0;;;8467:21:1;8524:2;8504:18;;;8497:30;-1:-1:-1;;;8543:18:1;;;8536:55;8608:18;;24076:68:0;8457:175:1;24076:68:0;24193:5;;24175:23;;24193:5;;;;;24175:15;:23;:::i;:::-;-1:-1:-1;;;;;24160:12:0;;;;;;:6;:12;;;;;:38;24019:181;24222:4;;-1:-1:-1;;;;;24214:12:0;;;24222:4;;24214:12;:20;;;;-1:-1:-1;24230:4:0;;;;24214:20;:35;;;;-1:-1:-1;;;;;;24239:10:0;;;;;;:6;:10;;;;;;;;24238:11;24214:35;24211:174;;;-1:-1:-1;;;;;24273:10:0;;;;;;:6;:10;;;;;;24286:15;-1:-1:-1;24265:66:0;;;;-1:-1:-1;;;24265:66:0;;8485:2:1;24265:66:0;;;8467:21:1;8524:2;8504:18;;;8497:30;-1:-1:-1;;;8543:18:1;;;8536:55;8608:18;;24265:66:0;8457:175:1;24265:66:0;24378:5;;24360:23;;24378:5;;;;;24360:15;:23;:::i;:::-;-1:-1:-1;;;;;24347:10:0;;;;;;:6;:10;;;;;:36;24211:174;24396:30;24409:4;24415:6;24423:2;24396:12;:30::i;:::-;24453:4;;24437:39;;-1:-1:-1;;;;;24445:12:0;;;24453:4;;24445:12;;:4;24465:6;24473:2;24437:7;:39::i;:::-;24498:4;;-1:-1:-1;;;;;24490:12:0;;;24498:4;;24490:12;24487:53;;;24533:5;;24515:23;;24533:5;;24515:15;:23;:::i;:::-;-1:-1:-1;;;;;24504:8:0;;;;;;:4;:8;;;;;:34;24487:53;24550:28;24581:24;24599:4;24581:9;:24::i;:::-;24550:55;;24616:11;24669:2;;24641:24;24661:3;;24641:15;24652:3;;24641:6;:10;;:15;;;;:::i;:24::-;:30;24638:67;;24679:24;24699:3;;24679:15;24690:3;;24679:6;:10;;:15;;;;:::i;:24::-;24673:30;;24638:67;24745:2;;24718:24;24738:3;;24718:15;24729:3;;24718:6;:10;;:15;;;;:::i;:24::-;:29;24715:44;;;-1:-1:-1;24755:2:0;;24715:44;24846:4;;24865:8;;24784:27;;;;;24836:14;;;;24865:8;;24864:9;:16;;;;-1:-1:-1;24877:3:0;;;;;;;24864:16;:27;;;;;24884:7;24864:27;:43;;;;-1:-1:-1;24903:4:0;;-1:-1:-1;;;;;24895:12:0;;;24903:4;;24895:12;;24864:43;:53;;;;;24911:6;24864:53;:69;;;;-1:-1:-1;;;;;;24922:11:0;;;;;;:5;:11;;;;;;;;24921:12;24864:69;24861:110;;;24949:19;24964:3;24949:14;:19::i;:::-;25020:4;;24989:11;;-1:-1:-1;;;;;25014:10:0;;;25020:4;;25014:10;25011:28;;;-1:-1:-1;25035:4:0;25011:28;-1:-1:-1;;;;;25085:10:0;;;;;;:4;:10;;;;;;25050:67;;25065:4;;25071:2;;25075:6;;25085:10;;;:22;;-1:-1:-1;;;;;;25099:8:0;;;;;;:4;:8;;;;;;;;25085:22;25083:25;25110:6;25050:14;:67::i;:::-;23338:1787;;;;;;;;:::o;2841:240::-;2961:7;3022:12;3014:6;;;;3006:29;;;;-1:-1:-1;;;3006:29:0;;;;;;;;:::i;:::-;-1:-1:-1;;;3057:5:0;;;2841:240::o;2417:98::-;2475:7;2502:5;2506:1;2502;:5;:::i;22290:158::-;22331:7;22352:15;22369;22388:19;:17;:19::i;:::-;22351:56;;-1:-1:-1;22351:56:0;-1:-1:-1;22425:15:0;22351:56;;22425:15;:::i;:::-;22418:22;;;;22290:158;:::o;20494:390::-;20580:36;;:::i;:::-;20641:37;20653:7;20662;20671:6;20641:11;:37::i;:::-;20629:49;;20797:52;20809:9;20820:7;20829;20838:10;:8;:10::i;:::-;20797:11;:52::i;:::-;20773:20;;;20689:160;20751:20;;;20689:160;20736:14;;;20689:160;20709:25;;;20689:160;;;20494:390;;;;;:::o;2523:98::-;2581:7;2608:5;2612:1;2608;:5;:::i;2629:98::-;2687:7;2714:5;2718:1;2714;:5;:::i;9214:173::-;9270:16;9289:6;;-1:-1:-1;;;;;9306:17:0;;;-1:-1:-1;;;;;;9306:17:0;;;;;;9339:40;;9289:6;;;;;;;9339:40;;9270:16;9339:40;9214:173;;:::o;25133:195::-;25250:12;;25240:6;:22;;:39;;;-1:-1:-1;;;;;;25266:13:0;;;;;;:5;:13;;;;;;;;25240:39;:58;;;-1:-1:-1;;;;;;25283:15:0;;;;;;:4;:15;;;;;;;;25240:58;25231:89;;;;-1:-1:-1;;;25231:89:0;;8139:2:1;25231:89:0;;;8121:21:1;8178:2;8158:18;;;8151:30;-1:-1:-1;;;8197:18:1;;;8190:47;8254:18;;25231:89:0;8111:167:1;26390:251:0;26498:7;:39;;;;-1:-1:-1;;;;;;26509:10:0;;;;;;:4;:10;;;;;;26522:15;-1:-1:-1;26498:39:0;26495:139;;;26571:5;;26561:6;:15;;:30;;;-1:-1:-1;;;;;;26580:11:0;;;;;;:5;:11;;;;;;;;26561:30;:49;;;-1:-1:-1;;;;;;26595:15:0;;;;;;:4;:15;;;;;;;;26561:49;26553:79;;;;-1:-1:-1;;;26553:79:0;;8139:2:1;26553:79:0;;;8121:21:1;8178:2;8158:18;;;8151:30;-1:-1:-1;;;8197:18:1;;;8190:47;8254:18;;26553:79:0;8111:167:1;26553:79:0;26390:251;;;;:::o;28095:770::-;13482:8;:15;;-1:-1:-1;;13482:15:0;13493:4;13482:15;;;28197:2:::1;::::0;28192::::1;::::0;28187::::1;::::0;13482:8;;28197:2;28187:7:::1;::::0;::::1;:::i;:::-;:12;;;;:::i;:::-;28186:18;::::0;28203:1:::1;28186:18;:::i;:::-;28165:39;;28215:32;28264:11;28259:2;;28250:6;:11;;;;:::i;:::-;:25;;;;:::i;:::-;28215:60:::0;-1:-1:-1;28286:14:0::1;28303:33;28215:60:::0;28303:6;:33:::1;:::i;:::-;28286:50:::0;-1:-1:-1;28372:21:0::1;28404:24;28286:50:::0;28404:16:::1;:24::i;:::-;28439:20;28462:38;28486:14:::0;28462:21:::1;:38;:::i;:::-;28439:61;;28511:19;28562:2;;28548:11;:16;;;;:::i;:::-;28532:33;::::0;:12;:33:::1;:::i;:::-;28511:54;;28576:29;28622:2;;28608:11;:16;;;;:::i;:::-;28576:48:::0;-1:-1:-1;28638:25:0;;28635:108:::1;;28679:61;28692:24;28718:21;28679:12;:61::i;:::-;28787:2;::::0;28753:13:::1;::::0;28769:15:::1;:11:::0;28783:1:::1;28769:15;:::i;:::-;:20;;;;:::i;:::-;28753:36:::0;-1:-1:-1;28803:9:0;;28800:58:::1;;28834:4;::::0;28826:29:::1;::::0;-1:-1:-1;;;;;28834:4:0;;::::1;::::0;28826:29;::::1;;;::::0;28849:5;;28834:4:::1;28826:29:::0;28834:4;28826:29;28849:5;28834:4;28826:29;::::1;;;;;;;;;;;;;::::0;::::1;;;;;;28800:58;-1:-1:-1::0;;13520:8:0;:16;;-1:-1:-1;;13520:16:0;;;-1:-1:-1;;;;;;;28095:770:0:o;25336:814::-;25458:28;25489:36;25500:7;25509;25518:6;25489:10;:36::i;:::-;-1:-1:-1;;;;;25540:19:0;;;;;;:11;:19;;;;;;25458:67;;-1:-1:-1;25540:19:0;;25536:88;;;-1:-1:-1;;;;;25599:15:0;;;;;;:7;:15;;;;;;:23;;25615:7;;25599:23;:::i;:::-;-1:-1:-1;;;;;25581:15:0;;;;;;:7;:15;;;;;:41;25536:88;-1:-1:-1;;;;;25638:22:0;;;;;;:11;:22;;;;;;;;25634:106;;;25721:17;;;;-1:-1:-1;;;;;25702:18:0;;;;;;:7;:18;;;;;;:36;;25721:17;25702:36;:::i;:::-;-1:-1:-1;;;;;25681:18:0;;;;;;:7;:18;;;;;:57;25634:106;25784:9;;-1:-1:-1;;;;;25768:15:0;;25784:9;25768:15;;;:7;:15;;;;;;:25;;25784:9;25768:25;:::i;:::-;-1:-1:-1;;;;;25750:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;25844:17;;;25825:18;;;;;;;;;;:36;;25844:17;25825:36;:::i;:::-;-1:-1:-1;;;;;25804:18:0;;;;;;:7;:18;;;;;;;:57;;;;25884:6;;;25892;;;;25872:27;;25884:6;25872:11;:27::i;:::-;25910:41;25925:1;:12;;;25938:1;:12;;;25910:14;:41::i;:::-;25962:42;25977:1;:12;;;25991:1;:12;;;25962:14;:42::i;:::-;26037:9;-1:-1:-1;;;;;26020:46:0;26029:6;-1:-1:-1;;;;;26020:46:0;;26048:1;:17;;;26020:46;;;;14522:25:1;;14510:2;14495:18;;14477:76;26020:46:0;;;;;;;;26107:4;-1:-1:-1;;;;;26082:60:0;26091:6;-1:-1:-1;;;;;26082:60:0;;26129:1;:12;;;26114:1;:12;;;:27;;;;:::i;:::-;26082:60;;14522:25:1;;;14510:2;14495:18;26082:60:0;;;;;;;25336:814;;;;;;:::o;22456:531::-;22553:7;;22589;;22506;;;;;22607:270;22631:9;:16;22627:20;;22607:270;;;22697:7;22673;:21;22681:9;22691:1;22681:12;;;;;;-1:-1:-1;;;22681:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22681:12:0;22673:21;;;;;;;;;;;;;:31;;:66;;;22732:7;22708;:21;22716:9;22726:1;22716:12;;;;;;-1:-1:-1;;;22716:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22716:12:0;22708:21;;;;;;;;;;;;;:31;22673:66;22669:97;;;22749:7;;22758;;22741:25;;;;;;;22456:531;;:::o;22669:97::-;22799:7;:21;22807:9;22817:1;22807:12;;;;;;-1:-1:-1;;;22807:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22807:12:0;22799:21;;;;;;;;;;;;;22791:29;;:7;:29;:::i;:::-;22781:39;;22853:7;:21;22861:9;22871:1;22861:12;;;;;;-1:-1:-1;;;22861:12:0;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;22861:12:0;22853:21;;;;;;;;;;;;;22845:29;;:7;:29;:::i;:::-;22835:39;-1:-1:-1;22649:3:0;;;;:::i;:::-;;;;22607:270;;;;22909:7;;22901;;:15;;;;:::i;:::-;22891:7;:25;22887:56;;;22926:7;;22935;;22918:25;;;;;;22456:531;;:::o;22887:56::-;22962:7;;22971;;-1:-1:-1;22456:531:0;-1:-1:-1;22456:531:0:o;20892:775::-;20979:28;;:::i;:::-;21024:7;21020:77;;21046:17;;;:27;;;21086:8;;21020:77;21110:6;21107:534;;;21149:12;:16;21166:4;;21141:24;;:7;:24;:::i;:::-;:29;;;;:::i;:::-;21132:6;;;:38;21208:22;;21231:4;;21200:30;;:7;:30;:::i;:::-;:35;;;;:::i;:::-;21185:12;;;:50;21273:22;;21296:4;;21265:30;;:7;:30;:::i;:::-;:35;;;;:::i;:::-;21250:12;;;:50;;;21350:12;;;;21343:6;;;;21335:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;21315:17;;;:60;21107:534;;;21424:8;:12;21437:4;;21416:20;;:7;:20;:::i;:::-;:25;;;;:::i;:::-;21407:6;;;:34;21479:18;;21498:4;;21471:26;;:7;:26;:::i;:::-;:31;;;;:::i;:::-;21456:12;;;:46;21540:18;;21559:4;;21532:26;;:7;:26;:::i;:::-;:31;;;;:::i;:::-;21517:12;;;:46;;;21613:12;;;;21606:6;;;;21598:14;;:7;:14;:::i;:::-;:27;;;;:::i;:::-;:40;;;;:::i;:::-;21578:17;;;:60;20892:775;;;;;:::o;21675:607::-;21800:15;;;;;21917:19;21925:11;21917:7;:19;:::i;:::-;21907:29;;21951:7;21947:60;;-1:-1:-1;21980:7:0;;-1:-1:-1;21998:1:0;;-1:-1:-1;21998:1:0;;-1:-1:-1;21998:1:0;21973:31;;21947:60;22031:11;22024:1;:6;;;:18;;;;:::i;:::-;22017:25;;22079:11;22066:1;:12;;;:24;;;;:::i;:::-;22053:37;;22127:11;22114:1;:12;;;:24;;;;:::i;:::-;22101:37;-1:-1:-1;22101:37:0;22181:10;22168:12;22176:4;22168:7;:12;:::i;:::-;:23;;;;:::i;:::-;:34;;;;:::i;:::-;22149:53;;21675:607;;;;;;;;;;:::o;29457:441::-;29547:16;;;29561:1;29547:16;;;;;;;;29523:21;;29547:16;;;;;;;;;;-1:-1:-1;29547:16:0;29523:40;;29592:4;29574;29579:1;29574:7;;;;;;-1:-1:-1;;;29574:7:0;;;;;;;;;-1:-1:-1;;;;;29574:23:0;;;:7;;;;;;;;;:23;29618:4;;29608:7;;29618:4;;;29608;;29618;;29608:7;;;;-1:-1:-1;;;29608:7:0;;;;;;;;;-1:-1:-1;;;;;29608:14:0;;;:7;;;;;;;;;:14;29667:6;;29635:53;;29652:4;;29667:6;29676:11;29635:8;:53::i;:::-;29701:6;;:187;;-1:-1:-1;;;29701:187:0;;-1:-1:-1;;;;;29701:6:0;;;;:57;;:187;;29773:11;;29701:6;;29815:4;;29842;;29862:15;;29701:187;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28873:340;28986:6;;28954:53;;28971:4;;-1:-1:-1;;;;;28986:6:0;28995:11;28954:8;:53::i;:::-;29020:6;;29161:3;;29020:185;;-1:-1:-1;;;29020:185:0;;29083:4;29020:185;;;6462:34:1;6512:18;;;6505:34;;;29020:6:0;6555:18:1;;;6548:34;;;6598:18;;;6591:34;-1:-1:-1;;;;;29161:3:0;;;6641:19:1;;;6634:44;29179:15:0;6694:19:1;;;6687:35;29020:6:0;;;:22;;29050:9;;6396:19:1;;29020:185:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;28873:340;;:::o;19432:123::-;19510:4;19500:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;19525:11:0;:22;;19543:4;;19525:11;:15;;:22;;19543:4;;19525:22;:::i;:::-;;;;-1:-1:-1;;;;19432:123:0:o;19935:284::-;20042:10;20018:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;20088:4:0;20068:26;;;;:11;:26;;;;;;;;20065:101;;;20136:4;20120:22;;;;:7;:22;;;;;:34;;20144:10;;20120:22;:34;;20144:10;;20120:34;:::i;:::-;;;;-1:-1:-1;;20065:101:0;20192:4;20176:22;;;;:7;:22;;;;;:35;;20201:10;;20176:22;:35;;20201:10;;20176:35;:::i;20227:257::-;20334:10;20310:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;20372:4:0;;-1:-1:-1;;;;;20372:4:0;20360:17;;;;:11;:17;;;;;;;;20357:83;;;20411:4;;-1:-1:-1;;;;;20411:4:0;20403:13;;;;:7;:13;;;;;:25;;20418:10;;20403:13;:25;;20418:10;;20403:25;:::i;:::-;;;;-1:-1:-1;;20357:83:0;20458:4;;-1:-1:-1;;;;;20458:4:0;20450:13;;;;:7;:13;;;;;:26;;20466:10;;20450:13;:26;;20466:10;;20450:26;:::i;-1:-1:-1:-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::o;14:173:1:-;82:20;;-1:-1:-1;;;;;131:31:1;;121:42;;111:2;;177:1;174;167:12;111:2;63:124;;;:::o;192:196::-;251:6;304:2;292:9;283:7;279:23;275:32;272:2;;;325:6;317;310:22;272:2;353:29;372:9;353:29;:::i;393:270::-;461:6;469;522:2;510:9;501:7;497:23;493:32;490:2;;;543:6;535;528:22;490:2;571:29;590:9;571:29;:::i;:::-;561:39;;619:38;653:2;642:9;638:18;619:38;:::i;:::-;609:48;;480:183;;;;;:::o;668:419::-;754:6;762;770;778;831:3;819:9;810:7;806:23;802:33;799:2;;;853:6;845;838:22;799:2;881:29;900:9;881:29;:::i;:::-;871:39;;929:38;963:2;952:9;948:18;929:38;:::i;:::-;919:48;;986:38;1020:2;1009:9;1005:18;986:38;:::i;:::-;976:48;;1043:38;1077:2;1066:9;1062:18;1043:38;:::i;:::-;1033:48;;789:298;;;;;;;:::o;1092:338::-;1169:6;1177;1185;1238:2;1226:9;1217:7;1213:23;1209:32;1206:2;;;1259:6;1251;1244:22;1206:2;1287:29;1306:9;1287:29;:::i;:::-;1277:39;;1335:38;1369:2;1358:9;1354:18;1335:38;:::i;:::-;1325:48;;1420:2;1409:9;1405:18;1392:32;1382:42;;1196:234;;;;;:::o;1435:407::-;1521:6;1529;1537;1545;1598:3;1586:9;1577:7;1573:23;1569:33;1566:2;;;1620:6;1612;1605:22;1566:2;1648:29;1667:9;1648:29;:::i;:::-;1638:39;;1696:38;1730:2;1719:9;1715:18;1696:38;:::i;:::-;1556:286;;1686:48;;-1:-1:-1;;;;1781:2:1;1766:18;;1753:32;;1832:2;1817:18;1804:32;;1556:286::o;1847:325::-;1912:6;1920;1973:2;1961:9;1952:7;1948:23;1944:32;1941:2;;;1994:6;1986;1979:22;1941:2;2022:29;2041:9;2022:29;:::i;:::-;2012:39;;2101:2;2090:9;2086:18;2073:32;2114:28;2136:5;2114:28;:::i;:::-;2161:5;2151:15;;;1931:241;;;;;:::o;2177:264::-;2245:6;2253;2306:2;2294:9;2285:7;2281:23;2277:32;2274:2;;;2327:6;2319;2312:22;2274:2;2355:29;2374:9;2355:29;:::i;:::-;2345:39;2431:2;2416:18;;;;2403:32;;-1:-1:-1;;;2264:177:1:o;2446:255::-;2513:6;2566:2;2554:9;2545:7;2541:23;2537:32;2534:2;;;2587:6;2579;2572:22;2534:2;2624:9;2618:16;2643:28;2665:5;2643:28;:::i;2706:325::-;2771:6;2779;2832:2;2820:9;2811:7;2807:23;2803:32;2800:2;;;2853:6;2845;2838:22;2800:2;2897:9;2884:23;2916:28;2938:5;2916:28;:::i;3036:319::-;3101:6;3109;3162:2;3150:9;3141:7;3137:23;3133:32;3130:2;;;3183:6;3175;3168:22;3130:2;3227:9;3214:23;3246:28;3268:5;3246:28;:::i;3360:426::-;3423:6;3431;3484:2;3472:9;3463:7;3459:23;3455:32;3452:2;;;3505:6;3497;3490:22;3452:2;3549:9;3536:23;3568:28;3590:5;3568:28;:::i;:::-;3615:5;-1:-1:-1;3672:2:1;3657:18;;3644:32;3720:4;3707:18;;3695:31;;3685:2;;3745:6;3737;3730:22;3791:190;3850:6;3903:2;3891:9;3882:7;3878:23;3874:32;3871:2;;;3924:6;3916;3909:22;3871:2;-1:-1:-1;3952:23:1;;3861:120;-1:-1:-1;3861:120:1:o;3986:194::-;4056:6;4109:2;4097:9;4088:7;4084:23;4080:32;4077:2;;;4130:6;4122;4115:22;4077:2;-1:-1:-1;4158:16:1;;4067:113;-1:-1:-1;4067:113:1:o;4185:319::-;4250:6;4258;4311:2;4299:9;4290:7;4286:23;4282:32;4279:2;;;4332:6;4324;4317:22;4279:2;4373:9;4360:23;4350:33;;4433:2;4422:9;4418:18;4405:32;4446:28;4468:5;4446:28;:::i;4509:258::-;4577:6;4585;4638:2;4626:9;4617:7;4613:23;4609:32;4606:2;;;4659:6;4651;4644:22;4606:2;-1:-1:-1;;4687:23:1;;;4757:2;4742:18;;;4729:32;;-1:-1:-1;4596:171:1:o;4772:326::-;4849:6;4857;4865;4918:2;4906:9;4897:7;4893:23;4889:32;4886:2;;;4939:6;4931;4924:22;4886:2;-1:-1:-1;;4967:23:1;;;5037:2;5022:18;;5009:32;;-1:-1:-1;5088:2:1;5073:18;;;5060:32;;4876:222;-1:-1:-1;4876:222:1:o;5103:316::-;5191:6;5199;5207;5260:2;5248:9;5239:7;5235:23;5231:32;5228:2;;;5281:6;5273;5266:22;5228:2;5315:9;5309:16;5299:26;;5365:2;5354:9;5350:18;5344:25;5334:35;;5409:2;5398:9;5394:18;5388:25;5378:35;;5218:201;;;;;:::o;6925:603::-;7037:4;7066:2;7095;7084:9;7077:21;7127:6;7121:13;7170:6;7165:2;7154:9;7150:18;7143:34;7195:4;7208:140;7222:6;7219:1;7216:13;7208:140;;;7317:14;;;7313:23;;7307:30;7283:17;;;7302:2;7279:26;7272:66;7237:10;;7208:140;;;7366:6;7363:1;7360:13;7357:2;;;7436:4;7431:2;7422:6;7411:9;7407:22;7403:31;7396:45;7357:2;-1:-1:-1;7512:2:1;7491:15;-1:-1:-1;;7487:29:1;7472:45;;;;7519:2;7468:54;;7046:482;-1:-1:-1;;;7046:482:1:o;11675:356::-;11877:2;11859:21;;;11896:18;;;11889:30;11955:34;11950:2;11935:18;;11928:62;12022:2;12007:18;;11849:182::o;14558:983::-;14820:4;14868:3;14857:9;14853:19;14899:6;14888:9;14881:25;14925:2;14963:6;14958:2;14947:9;14943:18;14936:34;15006:3;15001:2;14990:9;14986:18;14979:31;15030:6;15065;15059:13;15096:6;15088;15081:22;15134:3;15123:9;15119:19;15112:26;;15173:2;15165:6;15161:15;15147:29;;15194:4;15207:195;15221:6;15218:1;15215:13;15207:195;;;15286:13;;-1:-1:-1;;;;;15282:39:1;15270:52;;15377:15;;;;15342:12;;;;15318:1;15236:9;15207:195;;;-1:-1:-1;;;;;;;15458:32:1;;;;15453:2;15438:18;;15431:60;-1:-1:-1;;;15522:3:1;15507:19;15500:35;15419:3;14829:712;-1:-1:-1;;;14829:712:1:o;15735:128::-;15775:3;15806:1;15802:6;15799:1;15796:13;15793:2;;;15812:18;;:::i;:::-;-1:-1:-1;15848:9:1;;15783:80::o;15868:217::-;15908:1;15934;15924:2;;-1:-1:-1;;;15959:31:1;;16013:4;16010:1;16003:15;16041:4;15966:1;16031:15;15924:2;-1:-1:-1;16070:9:1;;15914:171::o;16090:168::-;16130:7;16196:1;16192;16188:6;16184:14;16181:1;16178:21;16173:1;16166:9;16159:17;16155:45;16152:2;;;16203:18;;:::i;:::-;-1:-1:-1;16243:9:1;;16142:116::o;16263:125::-;16303:4;16331:1;16328;16325:8;16322:2;;;16336:18;;:::i;:::-;-1:-1:-1;16373:9:1;;16312:76::o;16393:135::-;16432:3;-1:-1:-1;;16453:17:1;;16450:2;;;16473:18;;:::i;:::-;-1:-1:-1;16520:1:1;16509:13;;16440:88::o;16533:127::-;16594:10;16589:3;16585:20;16582:1;16575:31;16625:4;16622:1;16615:15;16649:4;16646:1;16639:15;16665:118;16751:5;16744:13;16737:21;16730:5;16727:32;16717:2;;16773:1;16770;16763:12

Swarm Source

ipfs://db51c509fe534ac5433f2d265b7f5d604c7514d5816383db3196cc37f0292739
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Validator ID :
0 FTM

Amount Staked
0

Amount Delegated
0

Staking Total
0

Staking Start Epoch
0

Staking Start Time
0

Proof of Importance
0

Origination Score
0

Validation Score
0

Active
0

Online
0

Downtime
0 s
Address Amount claimed Rewards Created On Epoch Created On
Block Uncle Number Difficulty Gas Used Reward
Loading
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.