ETH Price: $2,512.09 (+0.02%)

Token

SaitaRealty (SaitaRealty)
 

Overview

Max Total Supply

120,000,000,000,000,000 SaitaRealty

Holders

7,637

Market

Onchain Market Cap

$0.00

Circulating Supply Market Cap

-

Other Info

Token Contract (WITH 9 Decimals)

Balance
24,687,379,134.780284247 SaitaRealty

Value
$0.00
0x723cd169bf4e0601760770d3799b2bd7be46feb4
Loading...
Loading
Loading...
Loading
Loading...
Loading

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

Similar Match Source Code
This contract matches the deployed Bytecode of the Source Code for Contract 0xff7c9B60...415c9B6c2
The constructor portion of the code might be different and could alter the actual behaviour of the contract

Contract Name:
SaitaRealty

Compiler Version
v0.8.10+commit.fc410830

Optimization Enabled:
Yes with 1500 runs

Other Settings:
default evmVersion, None license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2022-03-04
*/

// SPDX-License-Identifier: NOLICENSE
pragma solidity ^0.8.10;
                                                                                                                                                                                                     
/*
                                                                                           .=+*-                                                                                                        
                                                                                         :%%@%%@%                                                                                                       
                                                                                        =%%####%@#                                                                                                      
                                                                                      :#%#######@@+                                                                                                     
                                                                                      #@#########%@=                                                                                                    
                                                                                     *@@%#########%@*                                                                                                   
                                                                                    #@@@@##########%@*                                                                                                  
                                                                                    %@@@@############@-                                                                                                 
                                                                            =++=   .@@@@#############@-                                                                                                 
                                                                           #@%%%@*:.@@@@@############%#=                                                                                                
                                                                          %@######%@@@@@@%############%%%--.                                                                                            
                                                                          %@########%@@@@%###############%%%@#+:                                                                                        
                                                                          +#@##########%@%##############%@%##%%@@=                                                                                      
                                                                           =@%############################@%####%@*                                                                                     
                                                                            *@@############################%#####%@#                                                                                    
                                                                             %@###############################%%%%%@-                                                                                   
                                                                             :@@##########################%%%%%%%%%%%=                                                                                  
                                                                              -@######################%%%%%%%%%%%%%%%#+                                                                                 
                                                                               @@#################%%%%%%%%%%%%%%%%%%%%@-                                                                                
                                                                               +@############%%%%%%%%%%%%%%%%%%%%%%%@@@*:                                                                               
                                                                               =@@####%%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@*+                                                                              
                                                                               =@@%%%%%%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@==.                                                                            
                                                                               =@@%%%%%%%%%%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@#=:                                                                          
                                                                               %@%%%%%%%%%%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#+-                                                                        
                                                                              =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*@-                                                                      
                                                                             =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*.                                                                   
                                                                          .:#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+                                                                   
                                                                        -#%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%@@@#=                                                                     
                                                                         :**#@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@.                                                                            
                                                                           -%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@*                                                                            
                                                                        .=@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@%%                                                                           
                                                                     -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-                                                                         
                                                                      .=**@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#-                                                                       
                                                                         +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-                                                                      
                                                                        .%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#                                                                         
                                                                       :+@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+=                                                                       
                                                                       +@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@##-                                                                     
                                                                      *@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-                                                                   
                                                                    =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@+                                                                      
                                                                   =@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:                                                                     
                                                                    --*@@@#.@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:                                                                     
                                                                    ##@@@#  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@#                                                                      
                                                                    +*@@@+  -@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@-                                                                       
                                                                            .*@@@@@%@@@@@@%@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@:                                                                      
                                                                               @%%%%%%%%%%%%@@%%%%%%%%%%%%==%@@@@@@@@@@@@@@@@@@                                                                         
                                                                             :@%%%%%%%%%%%%%@@%%%%%%%%%%%+ :+@%@@@@@@@@@@@@@@@%*:                                                                       
                                                                               *%%%%%%%%%%%@%*@%%%%%%%%%%= :@%%%%%%%%@@@@@@@@@@*                                                                        
                                                                                 =%%%%%%%%@@: =%%%%%%%%@*  -#%%%%%%%%%%%%%%@@@#.                                                                        
                                                                                 -%%%%%%%%@:. .@%%%%%%%#:  .*%%%%%%%%%%%%%%%@%-                                                                         
                                                                                   +@###%%+=   =++%###%#:   -*%%%%%%%@@%%%%%@*.                                                                         
                                                                                   :%###%@%    -%%###%-      +@@%%%%%@@%%%%@==.                                                                         
                                                                                    +@##%*.    :%@%###=       +%%%%%@@@%%%%@%@-                                                                         
                                                                                     *%%@-     .+#%##%%        *@%%%@ -#%%%%*-                                                                          
                                                                                     =%#@        =%##%=         =%%%%  :@@+:                                                                            
                                                                                                 +#%@+           -+*=                                                                                   
                                                                                                                                                                                                                                                                                                                                                                                                               
                                                                                                                                                                                                        
             .-:.   ..:-                         -=----                                                                                               ===--=+                                           
           =+-::::::::::*                       %-::::#      :=.                           @==========+---..                                          #=::::+        ==                                 
         -=::-+=--==-==:+                       :=++=-=      +:-+                          --+=:::-+++=:::::+=.                                        :%:::+       +*-+*                               
         +:::@         :.         .:::.         .::::       #-::*            .::::           ++:::=:   -+:::::+          .:-:            .:--:.         @:::+      :*:::%...    ....                    
        ==:::+=              +*=-::::::-*-=   .*:::::+=   +:::::::::::* -*+-:::::::++=       ++:::=.    =:::::*      :=*=::::-*=-   :**=:::::::-*=      @:::+    @-:::::::::::#=:::::-    .======-      
         +::::-=--:-.        +=::=-=-+-:::--   :-=:::-*   -=+:::+------ :+::=-=-=-:::-=      ++:::+.    =::::-+     +=:-=:---:::=-  .#-::+==-=:::-*:    @:::+    -=+::::*:::::--:-:::-:   .-:::-::      
         :==::::::::-=--.     ..:.    %::::=     +:::-*     #:::*        ..::    +=:::*      ++:::=-.:=-=:-+=-    :#-::=    ==:::*    -.-.   -=::::=    @:::+      =::::%        :-:::=    -::--        
            -+*-::::::::=-            +-:::+     +:::-*     #:::*                 @:::*      ++:::::::::-::=      @::::+----==:::*            @::::=    @:::+      =::::%         =:::=-   =::=         
               .-.-=-::::#    :=:=++===-:::+     +:::-*     #:::*        .=-=++===-:::*      ++:::=--:=+:::-:     @::::-+++++++++-   .:-=+++++-::::=    @:::+      =::::%         :::::+  --:::         
                    :+:::+  :*-::=.:::=-:::+     +:::-*     #:::*       *-::=.::::#:::*      ++:::+.    =:::+*    @::::*            -=:::+::::#::::=    @:::+      =::::#         .=:::-..=::=          
         ==-         +:::%  @::::=    *-:::+     +:::-*     %:::+.     =+:::+    :*:::*      ++:::+.    :::::-+   #=:::-#       =:  +::::#    *::::=    @:::+      =::::-.         +-::::+::=-          
        %-::==:-==-:+-:-+.  #-:::-:----::::=-: :.=:::-*.-   #-:::+-=:=-:*:::----:=::::==-  -.+=:::=-.:   +-:::===: =+::::++:::+=-*  +::::-----:::::=- ::#:::=-::   :*::::::::=      +:::=-:-=           
        .-:=+++=+++-:-::     --++++=-:-:-::--..-.......:*    :=-:::-=-. :-=+++=--::-::-=-  *.........=    ::-++++=   -.==-:::-==..  .=:++++:=----::=- =.......:=    .-=-:::-:.      .:.:-::-            
                                                                                                                                                                                       +::::            
                                                                                                                                                                               ...    =-::-             
                                                                                                                                                                               -::::-:::-:              
                                                                                                                                                                               :.:::.::.                
                                               .   :.                     .                                                                                                                             
                                              =:*  +-          -=@       --+===      .   =*:    +++++++.:     =*.=*        :::::::                                                                      
                                             =+:*=====+     --++:      -=#*-*:*      :.  =:-     ::-+*+=.     =::=:       --------=       .:-+                                                          
                                              -:= --=     +-=+:*      .=::-#+=       :.  =+        *:*:       -= =: -#-   ---%*---:    :=*=%:       ........                                            
                                                .==+         =:*        :=+*:         .=-+-       =-*         ++ =:*+      :+--        .: .@                                                            
                                                -:           :-:        -:.           :-:.       .::         .:  ..-       -.:            .-                       

*/

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

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

    function _msgData() internal view virtual returns (bytes calldata) {
        this; // silence state mutability warning without generating bytecode - see https://github.com/ethereum/solidity/issues/2691
        return msg.data;
    }
}

abstract contract Ownable is Context {
    address private _owner;

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

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

    function owner() public 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);
}

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 swapExactTokensForETHSupportingFeeOnTransferTokens(
        uint amountIn,
        uint amountOutMin,
        address[] calldata path,
        address to,
        uint deadline) external;
}

contract SaitaRealty is Context, IERC20, Ownable {

    mapping (address => uint256) private _rOwned;
    mapping (address => uint256) private _tOwned;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => bool) private _isExcludedFromFee;
    mapping (address => bool) private _isExcluded;
    mapping (address => bool) private _isBot;

    address[] private _excluded;
    
    bool public swapEnabled;
    bool private swapping;

    IRouter public router;
    address public pair;

    uint8 private constant _decimals = 9;
    uint256 private constant MAX = ~uint256(0);

    uint256 private _tTotal = 12e16 * 10**_decimals;
    uint256 private _rTotal = (MAX - (MAX % _tTotal));

    
    uint256 public swapTokensAtAmount = 120_000_000_000_000 * 10**_decimals;
    uint256 public maxTxAmount = 5_000_000_000_000 * 10**_decimals;
    
    // Anti Dump //
    mapping (address => uint256) public _lastTrade;
    bool public coolDownEnabled = true;
    uint256 public coolDownTime = 30 seconds;

    address public treasuryAddress = 0x7f0Ac568E9B8fC2BeCfE7f6e8A3F070f2D05Baaf;
    address public marketingAddress = 0xbb6Bbe5fD38F856C34361f75bfE5616908C67bc7;
    address public burnAddress = 0x000000000000000000000000000000000000dEaD;
    address public lpRecipient = 0xB6dadf218e9a7EcF71DA05CA18A23A6a842AE45F;


    string private constant _name = "SaitaRealty";
    string private constant _symbol = "SaitaRealty";


    struct Taxes {
      uint256 rfi;
      uint256 treasury;
      uint256 marketing;
      uint256 burn;
      uint256 liquidity;
    }

    Taxes public taxes = Taxes(10,50,20,10,0);

    struct TotFeesPaidStruct{
        uint256 rfi;
        uint256 treasury;
        uint256 marketing;
        uint256 burn;
        uint256 liquidity;
    }
    TotFeesPaidStruct public totFeesPaid;

    struct valuesFromGetValues{
      uint256 rAmount;
      uint256 rTransferAmount;
      uint256 rRfi;
      uint256 rTreasury;
      uint256 rMarketing;
      uint256 rBurn;
      uint256 rLiquidity;
      uint256 tTransferAmount;
      uint256 tRfi;
      uint256 tTreasury;
      uint256 tMarketing;
      uint256 tBurn;
      uint256 tLiquidity;
    }

    event FeesChanged();
    event UpdatedRouter(address oldRouter, address newRouter);

    modifier lockTheSwap {
        swapping = true;
        _;
        swapping = false;
    }

    constructor (address routerAddress) {
        IRouter _router = IRouter(routerAddress);
        address _pair = IFactory(_router.factory())
            .createPair(address(this), _router.WETH());

        router = _router;
        pair = _pair;
        
        excludeFromReward(pair);

        _rOwned[owner()] = _rTotal;
        _isExcludedFromFee[owner()] = true;
        _isExcludedFromFee[address(this)] = true;
        _isExcludedFromFee[treasuryAddress]=true;
        _isExcludedFromFee[burnAddress] = true;
        _isExcludedFromFee[marketingAddress] = true;
        _isExcludedFromFee[lpRecipient] = true;

        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 virtual override returns (bool) {
        _transfer(sender, recipient, amount);

        uint256 currentAllowance = _allowances[sender][_msgSender()];
        require(currentAllowance >= amount, "ERC20: transfer amount exceeds allowance");
        _approve(sender, _msgSender(), currentAllowance - amount);

        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) {
        uint256 currentAllowance = _allowances[_msgSender()][spender];
        require(currentAllowance >= subtractedValue, "ERC20: decreased allowance below zero");
        _approve(_msgSender(), spender, currentAllowance - subtractedValue);

        return true;
    }

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

    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);
            return s.rAmount;
        } else {
            valuesFromGetValues memory s = _getValues(tAmount, true);
            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 excludeFromReward(address account) public onlyOwner() {
        require(!_isExcluded[account], "Account is already excluded");
        if(_rOwned[account] > 0) {
            _tOwned[account] = tokenFromReflection(_rOwned[account]);
        }
        _isExcluded[account] = true;
        _excluded.push(account);
    }

    function includeInReward(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 excludeFromFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = true;
    }

    function includeInFee(address account) public onlyOwner {
        _isExcludedFromFee[account] = false;
    }


    function isExcludedFromFee(address account) public view returns(bool) {
        return _isExcludedFromFee[account];
    }

    function setTaxes(uint256 _rfi, uint256 _treasury, uint256 _marketing, uint256 _burn, uint256 _liquidity) public onlyOwner {
        taxes.rfi = _rfi;
        taxes.treasury = _treasury;
        taxes.marketing = _marketing;
        taxes.burn = _burn;
        taxes.liquidity = _liquidity;
        emit FeesChanged();
    }


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

    function _takeLiquidity(uint256 rLiquidity, uint256 tLiquidity) private {
        totFeesPaid.liquidity +=tLiquidity;
        if(_isExcluded[address(this)]) _tOwned[address(this)]+=tLiquidity;
        _rOwned[address(this)] +=rLiquidity;
    }

    function _takeTreasury(uint256 rTreasury, uint256 tTreasury) private {
        totFeesPaid.treasury +=tTreasury;
        if(_isExcluded[treasuryAddress]) _tOwned[treasuryAddress]+=tTreasury;
        _rOwned[treasuryAddress] +=rTreasury;
    }
    
    function _takeMarketing(uint256 rMarketing, uint256 tMarketing) private{
        totFeesPaid.marketing +=tMarketing;
        if(_isExcluded[marketingAddress]) _tOwned[marketingAddress]+=tMarketing;
        _rOwned[marketingAddress] +=rMarketing;
    }

    function _takeBurn(uint256 rBurn, uint256 tBurn) private{
        totFeesPaid.burn +=tBurn;
        if(_isExcluded[marketingAddress])_tOwned[burnAddress]+=tBurn;
        _rOwned[burnAddress] +=rBurn;
    }

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

    function _getTValues(uint256 tAmount, bool takeFee) private view returns (valuesFromGetValues memory s) {

        if(!takeFee) {
          s.tTransferAmount = tAmount;
          return s;
        }
        
        s.tRfi = tAmount*taxes.rfi/1000;
        s.tTreasury = tAmount*taxes.treasury/1000;
        s.tMarketing = tAmount*taxes.marketing/1000;
        s.tBurn = tAmount*taxes.burn/1000;
        s.tLiquidity = tAmount*taxes.liquidity/1000;
        s.tTransferAmount = tAmount-s.tRfi-s.tTreasury-s.tLiquidity-s.tMarketing-s.tBurn;
        return s;
    }

    function _getRValues(valuesFromGetValues memory s, uint256 tAmount, bool takeFee, uint256 currentRate) private pure returns (uint256 rAmount, uint256 rTransferAmount, uint256 rRfi,uint256 rTreasury,uint256 rMarketing,uint256 rBurn,uint256 rLiquidity) {
        rAmount = tAmount*currentRate;

        if(!takeFee) {
          return(rAmount, rAmount, 0,0,0,0,0);
        }

        rRfi = s.tRfi*currentRate;
        rTreasury = s.tTreasury*currentRate;
        rLiquidity = s.tLiquidity*currentRate;
        rMarketing = s.tMarketing*currentRate;
        rBurn = s.tBurn*currentRate;
        rTransferAmount =  rAmount-rRfi-rTreasury-rLiquidity-rMarketing-rBurn;
        return (rAmount, rTransferAmount, rRfi,rTreasury,rMarketing,rBurn,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");
        require(!_isBot[from] && !_isBot[to], "You are a bot");
        

        if(!_isExcludedFromFee[from] && !_isExcludedFromFee[to] && !swapping){
            require(amount <= maxTxAmount ,"Amount is exceeding maxTxAmount");

            if(from != pair && coolDownEnabled){
                uint256 timePassed = block.timestamp - _lastTrade[from];
                require(timePassed > coolDownTime, "You must wait coolDownTime");
                _lastTrade[from] = block.timestamp;
            }
            if(to != pair && coolDownEnabled){
                uint256 timePassed2 = block.timestamp - _lastTrade[to];
                require(timePassed2 > coolDownTime, "You must wait coolDownTime");
                _lastTrade[to] = block.timestamp;
            }
        }
        
        bool canSwap = balanceOf(address(this)) >= swapTokensAtAmount;
        if(!swapping && swapEnabled && canSwap && from != pair && !_isExcludedFromFee[from] && !_isExcludedFromFee[to]){
            swapAndLiquify(swapTokensAtAmount);
        }

        _tokenTransfer(from, to, amount, !(_isExcludedFromFee[from] || _isExcludedFromFee[to]));
    }


    //this method is responsible for taking all fee, if takeFee is true
    function _tokenTransfer(address sender, address recipient, uint256 tAmount, bool takeFee) private {

        valuesFromGetValues memory s = _getValues(tAmount, takeFee);

        if (_isExcluded[sender] ) {  //from excluded
                _tOwned[sender] = _tOwned[sender]-tAmount;
        }
        if (_isExcluded[recipient]) { //to excluded
                _tOwned[recipient] = _tOwned[recipient]+s.tTransferAmount;
        }

        _rOwned[sender] = _rOwned[sender]-s.rAmount;
        _rOwned[recipient] = _rOwned[recipient]+s.rTransferAmount;
        
        if(s.rRfi > 0 || s.tRfi > 0) _reflectRfi(s.rRfi, s.tRfi);
        if(s.rLiquidity > 0 || s.tLiquidity > 0) {
            _takeLiquidity(s.rLiquidity,s.tLiquidity);
        }
        if(s.rTreasury > 0 || s.tTreasury > 0){
            _takeTreasury(s.rTreasury, s.tTreasury);
            emit Transfer(sender, treasuryAddress, s.tMarketing);
        }
        if(s.rMarketing > 0 || s.tMarketing > 0){
            _takeMarketing(s.rMarketing, s.tMarketing);
            emit Transfer(sender, marketingAddress, s.tMarketing);
        }
        if(s.rBurn > 0 || s.tBurn > 0){
            _takeBurn(s.rBurn, s.tBurn);
            emit Transfer(sender, burnAddress, s.tBurn);
        }
        
        emit Transfer(sender, recipient, s.tTransferAmount);
        emit Transfer(sender, address(this), s.tLiquidity);
        
    }

    function swapAndLiquify(uint256 tokens) private lockTheSwap{
       // Split the contract balance into halves
        uint256 tokensToAddLiquidityWith = tokens / 2;
        uint256 toSwap = tokens - tokensToAddLiquidityWith;

        uint256 initialBalance = address(this).balance;
        swapTokensForETH(toSwap);
        uint256 ETHToAddLiquidityWith = address(this).balance - initialBalance;

        if(ETHToAddLiquidityWith > 0){
            // Add liquidity to pancake
            addLiquidity(tokensToAddLiquidityWith, ETHToAddLiquidityWith);
        }

    }

    function addLiquidity(uint256 tokenAmount, uint256 ETHAmount) private {
        // approve token transfer to cover all possible scenarios
        _approve(address(this), address(router), tokenAmount);

        // add the liquidity
        router.addLiquidityETH{value: ETHAmount}(
            address(this),
            tokenAmount,
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            lpRecipient,
            block.timestamp
        );
    }

    function swapTokensForETH(uint256 tokenAmount) private {
        // generate the uniswap pair path of token -> weth
        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        // make the swap
        router.swapExactTokensForETHSupportingFeeOnTransferTokens(
            tokenAmount,
            0, // accept any amount of ETH
            path,
            address(this),
            block.timestamp
        );
    }

    function updateTreasuryWallet(address newWallet) external onlyOwner{
        require(treasuryAddress != newWallet ,'Wallet already set');
        treasuryAddress = newWallet;
        _isExcludedFromFee[treasuryAddress];
    }

    function updateBurnWallet(address newWallet) external onlyOwner{
        require(burnAddress != newWallet ,'Wallet already set');
        burnAddress = newWallet;
        _isExcludedFromFee[burnAddress];
    }

    function updateMarketingWallet(address newWallet) external onlyOwner{
        require(marketingAddress != newWallet ,'Wallet already set');
        marketingAddress = newWallet;
        _isExcludedFromFee[marketingAddress];
    }

    function updateLPRecipient(address newWallet) external onlyOwner{
        require(lpRecipient != newWallet ,'Wallet already set');
        lpRecipient = newWallet;
        _isExcludedFromFee[lpRecipient];
    }

    function updateMaxTxAmt(uint256 amount) external onlyOwner{
        maxTxAmount = amount * 10**_decimals;
    }

    function updateSwapTokensAtAmount(uint256 amount) external onlyOwner{
        swapTokensAtAmount = amount * 10**_decimals;
    }

    function updateSwapEnabled(bool _enabled) external onlyOwner{
        swapEnabled = _enabled;
    }

    function updateCoolDownSettings(bool _enabled, uint256 _timeInSeconds) external onlyOwner{
        coolDownEnabled = _enabled;
        coolDownTime = _timeInSeconds * 1 seconds;
    }

    function setAntibot(address account, bool state) external onlyOwner{
        require(_isBot[account] != state, 'Value already set');
        _isBot[account] = state;
    }
    
    function bulkAntiBot(address[] memory accounts, bool state) external onlyOwner{
        for(uint256 i = 0; i < accounts.length; i++){
            _isBot[accounts[i]] = state;
        }
    }
    
    function updateRouterAndPair(address newRouter, address newPair) external onlyOwner{
        router = IRouter(newRouter);
        pair = newPair;
    }
    
    function isBot(address account) public view returns(bool){
        return _isBot[account];
    }
    
    function airdropTokens(address[] memory recipients, uint256[] memory amounts) external onlyOwner{
         require(recipients.length == amounts.length,"Invalid size");
         address sender = msg.sender;
         for(uint256 i; i<recipients.length; i++){
            address recipient = recipients[i];
            uint256 rAmount = amounts[i]*_getRate();
            _rOwned[sender] = _rOwned[sender]- rAmount;
            _rOwned[recipient] = _rOwned[recipient] + rAmount;
            emit Transfer(sender, recipient, amounts[i]);
         }
    }

    //Use this in case ETH are sent to the contract by mistake
    function rescueETH(uint256 weiAmount) external onlyOwner{
        require(address(this).balance >= weiAmount, "insufficient ETH balance");
        payable(owner()).transfer(weiAmount);
    }
    
    // Function to allow admin to claim *other* ERC20 tokens sent to this contract (by mistake)
    // Owner cannot transfer out catecoin from this smart contract
    function rescueAnyERC20Tokens(address _tokenAddr, address _to, uint _amount) public onlyOwner {
        IERC20(_tokenAddr).transfer(_to, _amount);
    }

    receive() external payable{
    }
}

Contract Security Audit

Contract ABI

[{"inputs":[{"internalType":"address","name":"routerAddress","type":"address"}],"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"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"oldRouter","type":"address"},{"indexed":false,"internalType":"address","name":"newRouter","type":"address"}],"name":"UpdatedRouter","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"_lastTrade","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"recipients","type":"address[]"},{"internalType":"uint256[]","name":"amounts","type":"uint256[]"}],"name":"airdropTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"owner","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"accounts","type":"address[]"},{"internalType":"bool","name":"state","type":"bool"}],"name":"bulkAntiBot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"burnAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"coolDownTime","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"subtractedValue","type":"uint256"}],"name":"decreaseAllowance","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"excludeFromReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"includeInReward","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":"isBot","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromFee","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isExcludedFromReward","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"lpRecipient","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"marketingAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"maxTxAmount","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":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[{"internalType":"address","name":"_tokenAddr","type":"address"},{"internalType":"address","name":"_to","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"rescueAnyERC20Tokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"weiAmount","type":"uint256"}],"name":"rescueETH","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"},{"internalType":"bool","name":"state","type":"bool"}],"name":"setAntibot","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_rfi","type":"uint256"},{"internalType":"uint256","name":"_treasury","type":"uint256"},{"internalType":"uint256","name":"_marketing","type":"uint256"},{"internalType":"uint256","name":"_burn","type":"uint256"},{"internalType":"uint256","name":"_liquidity","type":"uint256"}],"name":"setTaxes","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapTokensAtAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"taxes","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"treasury","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"liquidity","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"rAmount","type":"uint256"}],"name":"tokenFromReflection","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totFeesPaid","outputs":[{"internalType":"uint256","name":"rfi","type":"uint256"},{"internalType":"uint256","name":"treasury","type":"uint256"},{"internalType":"uint256","name":"marketing","type":"uint256"},{"internalType":"uint256","name":"burn","type":"uint256"},{"internalType":"uint256","name":"liquidity","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":[],"name":"treasuryAddress","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateBurnWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"},{"internalType":"uint256","name":"_timeInSeconds","type":"uint256"}],"name":"updateCoolDownSettings","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateLPRecipient","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateMarketingWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateMaxTxAmt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newRouter","type":"address"},{"internalType":"address","name":"newPair","type":"address"}],"name":"updateRouterAndPair","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"updateSwapEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"updateSwapTokensAtAmount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newWallet","type":"address"}],"name":"updateTreasuryWallet","outputs":[],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

6080604052620000126009600a620009d2565b62000026906701aa535d3d0c0000620009e3565b600a819055620000399060001962000a1b565b620000479060001962000a32565b600b55620000586009600a620009d2565b6200006a90656d23ad5f8000620009e3565b600c556200007b6009600a620009d2565b6200008d9065048c27395000620009e3565b600d55600f805460ff19166001179055601e601055601180546001600160a01b0319908116737f0ac568e9b8fc2becfe7f6e8a3f070f2d05baaf1790915560128054821673bb6bbe5fd38f856c34361f75bfe5616908c67bc717905560138054821661dead1790556014805490911673b6dadf218e9a7ecf71da05ca18a23a6a842ae45f1781556040805160a081018252600a808252603260208301819052928201849052606082018190526000608090920182905260158190556016929092556017929092556018556019553480156200016757600080fd5b50604051620044d5380380620044d58339810160408190526200018a9162000a4c565b620001953362000484565b60008190506000816001600160a01b031663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015620001db573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000201919062000a4c565b6001600160a01b031663c9c6539630846001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa1580156200024f573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019062000275919062000a4c565b6040516001600160e01b031960e085901b1681526001600160a01b039283166004820152911660248201526044016020604051808303816000875af1158015620002c3573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190620002e9919062000a4c565b600880546001600160a01b03808616620100000262010000600160b01b031990921691909117909155600980549183166001600160a01b0319909216821790559091506200033790620004d4565b600b5460016000620003516000546001600160a01b031690565b6001600160a01b03166001600160a01b03168152602001908152602001600020819055506001600460006200038b6200066260201b60201c565b6001600160a01b03908116825260208083019390935260409182016000908120805495151560ff1996871617905530815260049093528183208054851660019081179091556011548216845282842080548616821790556013548216845282842080548616821790556012548216845282842080548616821790556014549091168352912080549092161790556200042b6000546001600160a01b031690565b6001600160a01b031660006001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef600a546040516200047391815260200190565b60405180910390a350505062000ac2565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6000546001600160a01b03163314620005345760405162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e657260448201526064015b60405180910390fd5b6001600160a01b03811660009081526005602052604090205460ff16156200059f5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c75646564000000000060448201526064016200052b565b6001600160a01b03811660009081526001602052604090205415620005fc576001600160a01b038116600090815260016020526040902054620005e29062000671565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031690565b6000600b54821115620006da5760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201526965666c656374696f6e7360b01b60648201526084016200052b565b6000620006e6620006fb565b9050620006f4818462000a77565b9392505050565b600080806200070962000721565b90925090506200071a818362000a77565b9250505090565b600b54600a546000918291825b600754811015620008895782600160006007848154811062000754576200075462000a8e565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180620007c357508160026000600784815481106200079c576200079c62000a8e565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15620007da57600b54600a54945094505050509091565b6001600060078381548110620007f457620007f462000a8e565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462000825908462000a32565b9250600260006007838154811062000841576200084162000a8e565b60009182526020808320909101546001600160a01b0316835282019290925260400190205462000872908362000a32565b915080620008808162000aa4565b9150506200072e565b50600a54600b546200089c919062000a77565b821015620008b457600b54600a549350935050509091565b90939092509050565b634e487b7160e01b600052601160045260246000fd5b600181815b8085111562000914578160001904821115620008f857620008f8620008bd565b808516156200090657918102915b93841c9390800290620008d8565b509250929050565b6000826200092d57506001620009cc565b816200093c57506000620009cc565b8160018114620009555760028114620009605762000980565b6001915050620009cc565b60ff841115620009745762000974620008bd565b50506001821b620009cc565b5060208310610133831016604e8410600b8410161715620009a5575081810a620009cc565b620009b18383620008d3565b8060001904821115620009c857620009c8620008bd565b0290505b92915050565b6000620006f460ff8416836200091c565b600081600019048311821515161562000a005762000a00620008bd565b500290565b634e487b7160e01b600052601260045260246000fd5b60008262000a2d5762000a2d62000a05565b500690565b60008282101562000a475762000a47620008bd565b500390565b60006020828403121562000a5f57600080fd5b81516001600160a01b0381168114620006f457600080fd5b60008262000a895762000a8962000a05565b500490565b634e487b7160e01b600052603260045260246000fd5b600060001982141562000abb5762000abb620008bd565b5060010190565b613a038062000ad26000396000f3fe6080604052600436106103435760003560e01c806388f82020116101b0578063aacebbe3116100ec578063dd62ed3e11610095578063ea2f0b371161006f578063ea2f0b3714610a0c578063ee36e35914610a2c578063f2fde38b14610a46578063f887ea4014610a6657600080fd5b8063dd62ed3e14610990578063e1165545146109d6578063e2f45605146109f657600080fd5b8063c5f956af116100c6578063c5f956af1461093a578063d257b34f1461095a578063d2ce0db21461097a57600080fd5b8063aacebbe3146108da578063b31470a4146108fa578063b38393891461091a57600080fd5b80639ba5e4d511610159578063a5ece94111610133578063a5ece9411461084d578063a87859f61461086d578063a8aa1b311461089a578063a9059cbb146108ba57600080fd5b80639ba5e4d5146107e65780639e252f001461080d578063a457c2d71461082d57600080fd5b80638da5cb5b1161018a5780638da5cb5b146107a8578063924de9b7146107c657806395d89b411461034f57600080fd5b806388f82020146107395780638c0ae3df146107725780638c0b5e221461079257600080fd5b8063437823ec1161027f5780636ddd17131161022857806370d5ae051161020257806370d5ae0514610695578063715018a6146106b5578063728f8eea146106ca578063809d458d1461071957600080fd5b80636ddd17131461063b578063706f69371461065557806370a082311461067557600080fd5b806352390c021161025957806352390c02146105c25780635342acb4146105e25780635fcefa421461061b57600080fd5b8063437823ec1461054a578063452e68dd1461056a5780634549b039146105a257600080fd5b80632d838119116102ec5780633685d419116102c65780633685d419146104b157806339509351146104d15780633bbac579146104f157806340b28c2f1461052a57600080fd5b80632d838119146104555780632e092fe814610475578063313ce5671461049557600080fd5b806318160ddd1161031d57806318160ddd146103f657806323b872dd1461041557806328efa5fa1461043557600080fd5b806306fdde031461034f578063095ea7b3146103a45780630d65df9b146103d457600080fd5b3661034a57005b600080fd5b34801561035b57600080fd5b50604080518082018252600b81527f53616974615265616c74790000000000000000000000000000000000000000006020820152905161039b9190613316565b60405180910390f35b3480156103b057600080fd5b506103c46103bf366004613380565b610a8c565b604051901515815260200161039b565b3480156103e057600080fd5b506103f46103ef3660046133ac565b610aa3565b005b34801561040257600080fd5b50600a545b60405190815260200161039b565b34801561042157600080fd5b506103c46104303660046133ac565b610b82565b34801561044157600080fd5b506103f46104503660046133ed565b610c48565b34801561046157600080fd5b5061040761047036600461340a565b610d17565b34801561048157600080fd5b506103f461049036600461340a565b610dae565b3480156104a157600080fd5b506040516009815260200161039b565b3480156104bd57600080fd5b506103f46104cc3660046133ed565b610e12565b3480156104dd57600080fd5b506103c46104ec366004613380565b610fe7565b3480156104fd57600080fd5b506103c461050c3660046133ed565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561053657600080fd5b506103f4610545366004613423565b61101e565b34801561055657600080fd5b506103f46105653660046133ed565b6110b6565b34801561057657600080fd5b5060145461058a906001600160a01b031681565b6040516001600160a01b03909116815260200161039b565b3480156105ae57600080fd5b506104076105bd36600461346a565b611122565b3480156105ce57600080fd5b506103f46105dd3660046133ed565b6111ac565b3480156105ee57600080fd5b506103c46105fd3660046133ed565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561062757600080fd5b506103f461063636600461348f565b61131d565b34801561064757600080fd5b506008546103c49060ff1681565b34801561066157600080fd5b506103f46106703660046135a9565b6113ae565b34801561068157600080fd5b506104076106903660046133ed565b611582565b3480156106a157600080fd5b5060135461058a906001600160a01b031681565b3480156106c157600080fd5b506103f46115e1565b3480156106d657600080fd5b506015546016546017546018546019546106f1949392919085565b604080519586526020860194909452928401919091526060830152608082015260a00161039b565b34801561072557600080fd5b506103f46107343660046133ed565b611635565b34801561074557600080fd5b506103c46107543660046133ed565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561077e57600080fd5b506103f461078d366004613664565b611704565b34801561079e57600080fd5b50610407600d5481565b3480156107b457600080fd5b506000546001600160a01b031661058a565b3480156107d257600080fd5b506103f46107e1366004613682565b61176c565b3480156107f257600080fd5b50601a54601b54601c54601d54601e546106f1949392919085565b34801561081957600080fd5b506103f461082836600461340a565b6117c7565b34801561083957600080fd5b506103c4610848366004613380565b611898565b34801561085957600080fd5b5060125461058a906001600160a01b031681565b34801561087957600080fd5b506104076108883660046133ed565b600e6020526000908152604090205481565b3480156108a657600080fd5b5060095461058a906001600160a01b031681565b3480156108c657600080fd5b506103c46108d5366004613380565b61194b565b3480156108e657600080fd5b506103f46108f53660046133ed565b611958565b34801561090657600080fd5b506103f461091536600461369f565b611a27565b34801561092657600080fd5b506103f46109353660046133ed565b611adb565b34801561094657600080fd5b5060115461058a906001600160a01b031681565b34801561096657600080fd5b506103f461097536600461340a565b611baa565b34801561098657600080fd5b5061040760105481565b34801561099c57600080fd5b506104076109ab366004613423565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109e257600080fd5b506103f46109f13660046136e6565b611c0e565b348015610a0257600080fd5b50610407600c5481565b348015610a1857600080fd5b506103f4610a273660046133ed565b611cf0565b348015610a3857600080fd5b50600f546103c49060ff1681565b348015610a5257600080fd5b506103f4610a613660046133ed565b611d59565b348015610a7257600080fd5b5060085461058a906201000090046001600160a01b031681565b6000610a99338484611e29565b5060015b92915050565b6000546001600160a01b03163314610af05760405162461bcd60e51b815260206004820181905260248201526000805160206139ae83398151915260448201526064015b60405180910390fd5b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7c9190613714565b50505050565b6000610b8f848484611f81565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015610c295760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610ae7565b610c3d8533610c388685613747565b611e29565b506001949350505050565b6000546001600160a01b03163314610c905760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6014546001600160a01b0382811691161415610cee5760405162461bcd60e51b815260206004820152601260248201527f57616c6c657420616c72656164792073657400000000000000000000000000006044820152606401610ae7565b601480546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000600b54821115610d915760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610ae7565b6000610d9b612511565b9050610da7818461375e565b9392505050565b6000546001600160a01b03163314610df65760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b610e026009600a613864565b610e0c9082613873565b600d5550565b6000546001600160a01b03163314610e5a5760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6001600160a01b03811660009081526005602052604090205460ff16610ec25760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610ae7565b60005b600754811015610fe357816001600160a01b031660078281548110610eec57610eec613892565b6000918252602090912001546001600160a01b03161415610fd15760078054610f1790600190613747565b81548110610f2757610f27613892565b600091825260209091200154600780546001600160a01b039092169183908110610f5357610f53613892565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610fab57610fab6138a8565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610fdb816138be565b915050610ec5565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610a99918590610c389086906138d9565b6000546001600160a01b031633146110665760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b600880547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b0394851602179055600980546001600160a01b03191691909216179055565b6000546001600160a01b031633146110fe5760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600a548311156111765760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610ae7565b81611192576000611188846001612534565b519150610a9d9050565b600061119f846001612534565b602001519150610a9d9050565b6000546001600160a01b031633146111f45760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6001600160a01b03811660009081526005602052604090205460ff161561125d5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ae7565b6001600160a01b038116600090815260016020526040902054156112b7576001600160a01b03811660009081526001602052604090205461129d90610d17565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146113655760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b601585905560168490556017839055601882905560198190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b031633146113f65760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b80518251146114475760405162461bcd60e51b815260206004820152600c60248201527f496e76616c69642073697a6500000000000000000000000000000000000000006044820152606401610ae7565b3360005b8351811015610b7c57600084828151811061146857611468613892565b60200260200101519050600061147c612511565b85848151811061148e5761148e613892565b60200260200101516114a09190613873565b6001600160a01b0385166000908152600160205260409020549091506114c7908290613747565b6001600160a01b0380861660009081526001602052604080822093909355908416815220546114f79082906138d9565b6001600160a01b038084166000818152600160205260409020929092558651908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9088908790811061154e5761154e613892565b602002602001015160405161156591815260200190565b60405180910390a35050808061157a906138be565b91505061144b565b6001600160a01b03811660009081526005602052604081205460ff16156115bf57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610a9d90610d17565b6000546001600160a01b031633146116295760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b61163360006125e4565b565b6000546001600160a01b0316331461167d5760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6011546001600160a01b03828116911614156116db5760405162461bcd60e51b815260206004820152601260248201527f57616c6c657420616c72656164792073657400000000000000000000000000006044820152606401610ae7565b601180546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b0316331461174c5760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b600f805460ff1916831515179055611765816001613873565b6010555050565b6000546001600160a01b031633146117b45760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6008805460ff1916911515919091179055565b6000546001600160a01b0316331461180f5760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b8047101561185f5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610ae7565b600080546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610fe3573d6000803e3d6000fd5b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156119325760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610ae7565b6119413385610c388685613747565b5060019392505050565b6000610a99338484611f81565b6000546001600160a01b031633146119a05760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6012546001600160a01b03828116911614156119fe5760405162461bcd60e51b815260206004820152601260248201527f57616c6c657420616c72656164792073657400000000000000000000000000006044820152606401610ae7565b601280546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b03163314611a6f5760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b60005b8251811015611ad6578160066000858481518110611a9257611a92613892565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611ace816138be565b915050611a72565b505050565b6000546001600160a01b03163314611b235760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6013546001600160a01b0382811691161415611b815760405162461bcd60e51b815260206004820152601260248201527f57616c6c657420616c72656164792073657400000000000000000000000000006044820152606401610ae7565b601380546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b03163314611bf25760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b611bfe6009600a613864565b611c089082613873565b600c5550565b6000546001600160a01b03163314611c565760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6001600160a01b03821660009081526006602052604090205460ff1615158115151415611cc55760405162461bcd60e51b815260206004820152601160248201527f56616c756520616c7265616479207365740000000000000000000000000000006044820152606401610ae7565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611d385760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611da15760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6001600160a01b038116611e1d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ae7565b611e26816125e4565b50565b6001600160a01b038316611ea45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610ae7565b6001600160a01b038216611f205760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610ae7565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ffd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ae7565b6001600160a01b0382166120795760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610ae7565b600081116120ef5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610ae7565b6120f883611582565b81111561216d5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f72652060448201527f7468616e20796f75722062616c616e63650000000000000000000000000000006064820152608401610ae7565b6001600160a01b03831660009081526006602052604090205460ff161580156121af57506001600160a01b03821660009081526006602052604090205460ff16155b6121fb5760405162461bcd60e51b815260206004820152600d60248201527f596f7520617265206120626f74000000000000000000000000000000000000006044820152606401610ae7565b6001600160a01b03831660009081526004602052604090205460ff1615801561223d57506001600160a01b03821660009081526004602052604090205460ff16155b80156122515750600854610100900460ff16155b1561241857600d548111156122a85760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e7420697320657863656564696e67206d61785478416d6f756e74006044820152606401610ae7565b6009546001600160a01b038481169116148015906122c85750600f5460ff165b15612360576001600160a01b0383166000908152600e60205260408120546122f09042613747565b905060105481116123435760405162461bcd60e51b815260206004820152601a60248201527f596f75206d757374207761697420636f6f6c446f776e54696d650000000000006044820152606401610ae7565b506001600160a01b0383166000908152600e602052604090204290555b6009546001600160a01b038381169116148015906123805750600f5460ff165b15612418576001600160a01b0382166000908152600e60205260408120546123a89042613747565b905060105481116123fb5760405162461bcd60e51b815260206004820152601a60248201527f596f75206d757374207761697420636f6f6c446f776e54696d650000000000006044820152606401610ae7565b506001600160a01b0382166000908152600e602052604090204290555b6000600c5461242630611582565b6008549111159150610100900460ff16158015612445575060085460ff165b801561244e5750805b801561246857506009546001600160a01b03858116911614155b801561248d57506001600160a01b03841660009081526004602052604090205460ff16155b80156124b257506001600160a01b03831660009081526004602052604090205460ff16155b156124c2576124c2600c54612634565b6001600160a01b038416600090815260046020526040902054610b7c9085908590859060ff168061250b57506001600160a01b03871660009081526004602052604090205460ff165b1561269a565b600080600061251e612a60565b909250905061252d818361375e565b9250505090565b61259f604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6125a98383612be3565b90506125be8184846125b9612511565b612d5f565b60c088015260a08701526080860152606085015260408401526020830152815292915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805461ff001916610100179055600061265060028361375e565b9050600061265e8284613747565b90504761266a82612e35565b60006126768247613747565b90508015612688576126888482612fcd565b50506008805461ff0019169055505050565b60006126a68383612534565b6001600160a01b03861660009081526005602052604090205490915060ff1615612708576001600160a01b0385166000908152600260205260409020546126ee908490613747565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b03841660009081526005602052604090205460ff161561276b5760e08101516001600160a01b03851660009081526002602052604090205461275191906138d9565b6001600160a01b0385166000908152600260205260409020555b80516001600160a01b0386166000908152600160205260409020546127909190613747565b6001600160a01b03808716600090815260016020908152604080832094909455840151918716815291909120546127c791906138d9565b6001600160a01b03851660009081526001602052604090819020919091558101511515806127fa57506000816101000151115b156128125761281281604001518261010001516130a6565b60008160c00151118061282a57506000816101800151115b15612842576128428160c001518261018001516130db565b60008160600151118061285a57506000816101200151115b156128be576128728160600151826101200151613151565b6011546101408201516040519081526001600160a01b03918216918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6000816080015111806128d657506000816101400151115b1561293a576128ee81608001518261014001516131e8565b6012546101408201516040519081526001600160a01b03918216918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b60008160a00151118061295257506000816101600151115b156129b65761296a8160a0015182610160015161327f565b6013546101608201516040519081526001600160a01b03918216918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e001516040516129ff91815260200190565b60405180910390a3306001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101800151604051612a5191815260200190565b60405180910390a35050505050565b600b54600a546000918291825b600754811015612bb257826001600060078481548110612a8f57612a8f613892565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612afa5750816002600060078481548110612ad357612ad3613892565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612b1057600b54600a54945094505050509091565b6001600060078381548110612b2757612b27613892565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612b569084613747565b92506002600060078381548110612b6f57612b6f613892565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612b9e9083613747565b915080612baa816138be565b915050612a6d565b50600a54600b54612bc3919061375e565b821015612bda57600b54600a549350935050509091565b90939092509050565b612c4e604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81612c5f5760e08101839052610a9d565b6015546103e890612c709085613873565b612c7a919061375e565b6101008201526016546103e890612c919085613873565b612c9b919061375e565b6101208201526017546103e890612cb29085613873565b612cbc919061375e565b6101408201526018546103e890612cd39085613873565b612cdd919061375e565b6101608201526019546103e890612cf49085613873565b612cfe919061375e565b610180820181905261016082015161014083015161012084015161010085015192939192612d2c9088613747565b612d369190613747565b612d409190613747565b612d4a9190613747565b612d549190613747565b60e082015292915050565b6000808080808080612d71888b613873565b965088612d8f57508594506000935083925082915081905080612e27565b878b6101000151612da09190613873565b9450878b6101200151612db39190613873565b9350878b6101800151612dc69190613873565b9050878b6101400151612dd99190613873565b9250878b6101600151612dec9190613873565b915081838286612dfc898c613747565b612e069190613747565b612e109190613747565b612e1a9190613747565b612e249190613747565b95505b949950949992975094509450565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e6a57612e6a613892565b60200260200101906001600160a01b031690816001600160a01b031681525050600860029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0191906138f1565b81600181518110612f1457612f14613892565b6001600160a01b039283166020918202929092010152600854612f409130916201000090041684611e29565b6008546040517f791ac947000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b03169063791ac94790612f9790859060009086903090429060040161390e565b600060405180830381600087803b158015612fb157600080fd5b505af1158015612fc5573d6000803e3d6000fd5b505050505050565b600854612feb9030906201000090046001600160a01b031684611e29565b6008546014546040517ff305d7190000000000000000000000000000000000000000000000000000000081523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015262010000909204169063f305d71990839060c40160606040518083038185885af115801561307a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061309f919061397f565b5050505050565b81600b60008282546130b89190613747565b9091555050601a80548291906000906130d29084906138d9565b90915550505050565b80601a60040160008282546130f091906138d9565b90915550503060009081526005602052604090205460ff161561313257306000908152600260205260408120805483929061312c9084906138d9565b90915550505b30600090815260016020526040812080548492906130d29084906138d9565b80601a600101600082825461316691906138d9565b90915550506011546001600160a01b031660009081526005602052604090205460ff16156131be576011546001600160a01b0316600090815260026020526040812080548392906131b89084906138d9565b90915550505b6011546001600160a01b0316600090815260016020526040812080548492906130d29084906138d9565b80601a60020160008282546131fd91906138d9565b90915550506012546001600160a01b031660009081526005602052604090205460ff1615613255576012546001600160a01b03166000908152600260205260408120805483929061324f9084906138d9565b90915550505b6012546001600160a01b0316600090815260016020526040812080548492906130d29084906138d9565b80601a600301600082825461329491906138d9565b90915550506012546001600160a01b031660009081526005602052604090205460ff16156132ec576013546001600160a01b0316600090815260026020526040812080548392906132e69084906138d9565b90915550505b6013546001600160a01b0316600090815260016020526040812080548492906130d29084906138d9565b600060208083528351808285015260005b8181101561334357858101830151858201604001528201613327565b81811115613355576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611e2657600080fd5b6000806040838503121561339357600080fd5b823561339e8161336b565b946020939093013593505050565b6000806000606084860312156133c157600080fd5b83356133cc8161336b565b925060208401356133dc8161336b565b929592945050506040919091013590565b6000602082840312156133ff57600080fd5b8135610da78161336b565b60006020828403121561341c57600080fd5b5035919050565b6000806040838503121561343657600080fd5b82356134418161336b565b915060208301356134518161336b565b809150509250929050565b8015158114611e2657600080fd5b6000806040838503121561347d57600080fd5b8235915060208301356134518161345c565b600080600080600060a086880312156134a757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613509576135096134ca565b604052919050565b600067ffffffffffffffff82111561352b5761352b6134ca565b5060051b60200190565b600082601f83011261354657600080fd5b8135602061355b61355683613511565b6134e0565b82815260059290921b8401810191818101908684111561357a57600080fd5b8286015b8481101561359e5780356135918161336b565b835291830191830161357e565b509695505050505050565b600080604083850312156135bc57600080fd5b823567ffffffffffffffff808211156135d457600080fd5b6135e086838701613535565b93506020915081850135818111156135f757600080fd5b85019050601f8101861361360a57600080fd5b803561361861355682613511565b81815260059190911b8201830190838101908883111561363757600080fd5b928401925b828410156136555783358252928401929084019061363c565b80955050505050509250929050565b6000806040838503121561367757600080fd5b823561339e8161345c565b60006020828403121561369457600080fd5b8135610da78161345c565b600080604083850312156136b257600080fd5b823567ffffffffffffffff8111156136c957600080fd5b6136d585828601613535565b92505060208301356134518161345c565b600080604083850312156136f957600080fd5b82356137048161336b565b915060208301356134518161345c565b60006020828403121561372657600080fd5b8151610da78161345c565b634e487b7160e01b600052601160045260246000fd5b60008282101561375957613759613731565b500390565b60008261377b57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156137bb5781600019048211156137a1576137a1613731565b808516156137ae57918102915b93841c9390800290613785565b509250929050565b6000826137d257506001610a9d565b816137df57506000610a9d565b81600181146137f557600281146137ff5761381b565b6001915050610a9d565b60ff84111561381057613810613731565b50506001821b610a9d565b5060208310610133831016604e8410600b841016171561383e575081810a610a9d565b6138488383613780565b806000190482111561385c5761385c613731565b029392505050565b6000610da760ff8416836137c3565b600081600019048311821515161561388d5761388d613731565b500290565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006000198214156138d2576138d2613731565b5060010190565b600082198211156138ec576138ec613731565b500190565b60006020828403121561390357600080fd5b8151610da78161336b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561395e5784516001600160a01b031683529383019391830191600101613939565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561399457600080fd5b835192506020840151915060408401519050925092509256fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220615408ce280580d2fe55cd82ef35b4482f05eed35074b614f858e7f5bd03b7ec64736f6c634300080a00330000000000000000000000001c47ad80a8b0b467eb67ef23f2d4f772d500fb08

Deployed Bytecode

0x6080604052600436106103435760003560e01c806388f82020116101b0578063aacebbe3116100ec578063dd62ed3e11610095578063ea2f0b371161006f578063ea2f0b3714610a0c578063ee36e35914610a2c578063f2fde38b14610a46578063f887ea4014610a6657600080fd5b8063dd62ed3e14610990578063e1165545146109d6578063e2f45605146109f657600080fd5b8063c5f956af116100c6578063c5f956af1461093a578063d257b34f1461095a578063d2ce0db21461097a57600080fd5b8063aacebbe3146108da578063b31470a4146108fa578063b38393891461091a57600080fd5b80639ba5e4d511610159578063a5ece94111610133578063a5ece9411461084d578063a87859f61461086d578063a8aa1b311461089a578063a9059cbb146108ba57600080fd5b80639ba5e4d5146107e65780639e252f001461080d578063a457c2d71461082d57600080fd5b80638da5cb5b1161018a5780638da5cb5b146107a8578063924de9b7146107c657806395d89b411461034f57600080fd5b806388f82020146107395780638c0ae3df146107725780638c0b5e221461079257600080fd5b8063437823ec1161027f5780636ddd17131161022857806370d5ae051161020257806370d5ae0514610695578063715018a6146106b5578063728f8eea146106ca578063809d458d1461071957600080fd5b80636ddd17131461063b578063706f69371461065557806370a082311461067557600080fd5b806352390c021161025957806352390c02146105c25780635342acb4146105e25780635fcefa421461061b57600080fd5b8063437823ec1461054a578063452e68dd1461056a5780634549b039146105a257600080fd5b80632d838119116102ec5780633685d419116102c65780633685d419146104b157806339509351146104d15780633bbac579146104f157806340b28c2f1461052a57600080fd5b80632d838119146104555780632e092fe814610475578063313ce5671461049557600080fd5b806318160ddd1161031d57806318160ddd146103f657806323b872dd1461041557806328efa5fa1461043557600080fd5b806306fdde031461034f578063095ea7b3146103a45780630d65df9b146103d457600080fd5b3661034a57005b600080fd5b34801561035b57600080fd5b50604080518082018252600b81527f53616974615265616c74790000000000000000000000000000000000000000006020820152905161039b9190613316565b60405180910390f35b3480156103b057600080fd5b506103c46103bf366004613380565b610a8c565b604051901515815260200161039b565b3480156103e057600080fd5b506103f46103ef3660046133ac565b610aa3565b005b34801561040257600080fd5b50600a545b60405190815260200161039b565b34801561042157600080fd5b506103c46104303660046133ac565b610b82565b34801561044157600080fd5b506103f46104503660046133ed565b610c48565b34801561046157600080fd5b5061040761047036600461340a565b610d17565b34801561048157600080fd5b506103f461049036600461340a565b610dae565b3480156104a157600080fd5b506040516009815260200161039b565b3480156104bd57600080fd5b506103f46104cc3660046133ed565b610e12565b3480156104dd57600080fd5b506103c46104ec366004613380565b610fe7565b3480156104fd57600080fd5b506103c461050c3660046133ed565b6001600160a01b031660009081526006602052604090205460ff1690565b34801561053657600080fd5b506103f4610545366004613423565b61101e565b34801561055657600080fd5b506103f46105653660046133ed565b6110b6565b34801561057657600080fd5b5060145461058a906001600160a01b031681565b6040516001600160a01b03909116815260200161039b565b3480156105ae57600080fd5b506104076105bd36600461346a565b611122565b3480156105ce57600080fd5b506103f46105dd3660046133ed565b6111ac565b3480156105ee57600080fd5b506103c46105fd3660046133ed565b6001600160a01b031660009081526004602052604090205460ff1690565b34801561062757600080fd5b506103f461063636600461348f565b61131d565b34801561064757600080fd5b506008546103c49060ff1681565b34801561066157600080fd5b506103f46106703660046135a9565b6113ae565b34801561068157600080fd5b506104076106903660046133ed565b611582565b3480156106a157600080fd5b5060135461058a906001600160a01b031681565b3480156106c157600080fd5b506103f46115e1565b3480156106d657600080fd5b506015546016546017546018546019546106f1949392919085565b604080519586526020860194909452928401919091526060830152608082015260a00161039b565b34801561072557600080fd5b506103f46107343660046133ed565b611635565b34801561074557600080fd5b506103c46107543660046133ed565b6001600160a01b031660009081526005602052604090205460ff1690565b34801561077e57600080fd5b506103f461078d366004613664565b611704565b34801561079e57600080fd5b50610407600d5481565b3480156107b457600080fd5b506000546001600160a01b031661058a565b3480156107d257600080fd5b506103f46107e1366004613682565b61176c565b3480156107f257600080fd5b50601a54601b54601c54601d54601e546106f1949392919085565b34801561081957600080fd5b506103f461082836600461340a565b6117c7565b34801561083957600080fd5b506103c4610848366004613380565b611898565b34801561085957600080fd5b5060125461058a906001600160a01b031681565b34801561087957600080fd5b506104076108883660046133ed565b600e6020526000908152604090205481565b3480156108a657600080fd5b5060095461058a906001600160a01b031681565b3480156108c657600080fd5b506103c46108d5366004613380565b61194b565b3480156108e657600080fd5b506103f46108f53660046133ed565b611958565b34801561090657600080fd5b506103f461091536600461369f565b611a27565b34801561092657600080fd5b506103f46109353660046133ed565b611adb565b34801561094657600080fd5b5060115461058a906001600160a01b031681565b34801561096657600080fd5b506103f461097536600461340a565b611baa565b34801561098657600080fd5b5061040760105481565b34801561099c57600080fd5b506104076109ab366004613423565b6001600160a01b03918216600090815260036020908152604080832093909416825291909152205490565b3480156109e257600080fd5b506103f46109f13660046136e6565b611c0e565b348015610a0257600080fd5b50610407600c5481565b348015610a1857600080fd5b506103f4610a273660046133ed565b611cf0565b348015610a3857600080fd5b50600f546103c49060ff1681565b348015610a5257600080fd5b506103f4610a613660046133ed565b611d59565b348015610a7257600080fd5b5060085461058a906201000090046001600160a01b031681565b6000610a99338484611e29565b5060015b92915050565b6000546001600160a01b03163314610af05760405162461bcd60e51b815260206004820181905260248201526000805160206139ae83398151915260448201526064015b60405180910390fd5b6040517fa9059cbb0000000000000000000000000000000000000000000000000000000081526001600160a01b0383811660048301526024820183905284169063a9059cbb906044016020604051808303816000875af1158015610b58573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610b7c9190613714565b50505050565b6000610b8f848484611f81565b6001600160a01b038416600090815260036020908152604080832033845290915290205482811015610c295760405162461bcd60e51b815260206004820152602860248201527f45524332303a207472616e7366657220616d6f756e742065786365656473206160448201527f6c6c6f77616e63650000000000000000000000000000000000000000000000006064820152608401610ae7565b610c3d8533610c388685613747565b611e29565b506001949350505050565b6000546001600160a01b03163314610c905760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6014546001600160a01b0382811691161415610cee5760405162461bcd60e51b815260206004820152601260248201527f57616c6c657420616c72656164792073657400000000000000000000000000006044820152606401610ae7565b601480546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000600b54821115610d915760405162461bcd60e51b815260206004820152602a60248201527f416d6f756e74206d757374206265206c657373207468616e20746f74616c207260448201527f65666c656374696f6e73000000000000000000000000000000000000000000006064820152608401610ae7565b6000610d9b612511565b9050610da7818461375e565b9392505050565b6000546001600160a01b03163314610df65760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b610e026009600a613864565b610e0c9082613873565b600d5550565b6000546001600160a01b03163314610e5a5760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6001600160a01b03811660009081526005602052604090205460ff16610ec25760405162461bcd60e51b815260206004820152601760248201527f4163636f756e74206973206e6f74206578636c756465640000000000000000006044820152606401610ae7565b60005b600754811015610fe357816001600160a01b031660078281548110610eec57610eec613892565b6000918252602090912001546001600160a01b03161415610fd15760078054610f1790600190613747565b81548110610f2757610f27613892565b600091825260209091200154600780546001600160a01b039092169183908110610f5357610f53613892565b600091825260208083209190910180546001600160a01b0319166001600160a01b039485161790559184168152600282526040808220829055600590925220805460ff191690556007805480610fab57610fab6138a8565b600082815260209020810160001990810180546001600160a01b03191690550190555050565b80610fdb816138be565b915050610ec5565b5050565b3360008181526003602090815260408083206001600160a01b03871684529091528120549091610a99918590610c389086906138d9565b6000546001600160a01b031633146110665760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b600880547fffffffffffffffffffff0000000000000000000000000000000000000000ffff16620100006001600160a01b0394851602179055600980546001600160a01b03191691909216179055565b6000546001600160a01b031633146110fe5760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6001600160a01b03166000908152600460205260409020805460ff19166001179055565b6000600a548311156111765760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e74206d757374206265206c657373207468616e20737570706c79006044820152606401610ae7565b81611192576000611188846001612534565b519150610a9d9050565b600061119f846001612534565b602001519150610a9d9050565b6000546001600160a01b031633146111f45760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6001600160a01b03811660009081526005602052604090205460ff161561125d5760405162461bcd60e51b815260206004820152601b60248201527f4163636f756e7420697320616c7265616479206578636c7564656400000000006044820152606401610ae7565b6001600160a01b038116600090815260016020526040902054156112b7576001600160a01b03811660009081526001602052604090205461129d90610d17565b6001600160a01b0382166000908152600260205260409020555b6001600160a01b03166000818152600560205260408120805460ff191660019081179091556007805491820181559091527fa66cc928b5edb82af9bd49922954155ab7b0942694bea4ce44661d9a8736c6880180546001600160a01b0319169091179055565b6000546001600160a01b031633146113655760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b601585905560168490556017839055601882905560198190556040517f846206d6c3449ac0b05841dfb88bf28b55aef00f96152490c69c96238048de1590600090a15050505050565b6000546001600160a01b031633146113f65760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b80518251146114475760405162461bcd60e51b815260206004820152600c60248201527f496e76616c69642073697a6500000000000000000000000000000000000000006044820152606401610ae7565b3360005b8351811015610b7c57600084828151811061146857611468613892565b60200260200101519050600061147c612511565b85848151811061148e5761148e613892565b60200260200101516114a09190613873565b6001600160a01b0385166000908152600160205260409020549091506114c7908290613747565b6001600160a01b0380861660009081526001602052604080822093909355908416815220546114f79082906138d9565b6001600160a01b038084166000818152600160205260409020929092558651908616907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9088908790811061154e5761154e613892565b602002602001015160405161156591815260200190565b60405180910390a35050808061157a906138be565b91505061144b565b6001600160a01b03811660009081526005602052604081205460ff16156115bf57506001600160a01b031660009081526002602052604090205490565b6001600160a01b038216600090815260016020526040902054610a9d90610d17565b6000546001600160a01b031633146116295760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b61163360006125e4565b565b6000546001600160a01b0316331461167d5760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6011546001600160a01b03828116911614156116db5760405162461bcd60e51b815260206004820152601260248201527f57616c6c657420616c72656164792073657400000000000000000000000000006044820152606401610ae7565b601180546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b0316331461174c5760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b600f805460ff1916831515179055611765816001613873565b6010555050565b6000546001600160a01b031633146117b45760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6008805460ff1916911515919091179055565b6000546001600160a01b0316331461180f5760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b8047101561185f5760405162461bcd60e51b815260206004820152601860248201527f696e73756666696369656e74204554482062616c616e636500000000000000006044820152606401610ae7565b600080546040516001600160a01b039091169183156108fc02918491818181858888f19350505050158015610fe3573d6000803e3d6000fd5b3360009081526003602090815260408083206001600160a01b0386168452909152812054828110156119325760405162461bcd60e51b815260206004820152602560248201527f45524332303a2064656372656173656420616c6c6f77616e63652062656c6f7760448201527f207a65726f0000000000000000000000000000000000000000000000000000006064820152608401610ae7565b6119413385610c388685613747565b5060019392505050565b6000610a99338484611f81565b6000546001600160a01b031633146119a05760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6012546001600160a01b03828116911614156119fe5760405162461bcd60e51b815260206004820152601260248201527f57616c6c657420616c72656164792073657400000000000000000000000000006044820152606401610ae7565b601280546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b03163314611a6f5760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b60005b8251811015611ad6578160066000858481518110611a9257611a92613892565b6020908102919091018101516001600160a01b03168252810191909152604001600020805460ff191691151591909117905580611ace816138be565b915050611a72565b505050565b6000546001600160a01b03163314611b235760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6013546001600160a01b0382811691161415611b815760405162461bcd60e51b815260206004820152601260248201527f57616c6c657420616c72656164792073657400000000000000000000000000006044820152606401610ae7565b601380546001600160a01b039092166001600160a01b0319909216821790556000526004602052565b6000546001600160a01b03163314611bf25760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b611bfe6009600a613864565b611c089082613873565b600c5550565b6000546001600160a01b03163314611c565760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6001600160a01b03821660009081526006602052604090205460ff1615158115151415611cc55760405162461bcd60e51b815260206004820152601160248201527f56616c756520616c7265616479207365740000000000000000000000000000006044820152606401610ae7565b6001600160a01b03919091166000908152600660205260409020805460ff1916911515919091179055565b6000546001600160a01b03163314611d385760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6001600160a01b03166000908152600460205260409020805460ff19169055565b6000546001600160a01b03163314611da15760405162461bcd60e51b815260206004820181905260248201526000805160206139ae8339815191526044820152606401610ae7565b6001600160a01b038116611e1d5760405162461bcd60e51b815260206004820152602660248201527f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160448201527f64647265737300000000000000000000000000000000000000000000000000006064820152608401610ae7565b611e26816125e4565b50565b6001600160a01b038316611ea45760405162461bcd60e51b8152602060048201526024808201527f45524332303a20617070726f76652066726f6d20746865207a65726f2061646460448201527f72657373000000000000000000000000000000000000000000000000000000006064820152608401610ae7565b6001600160a01b038216611f205760405162461bcd60e51b815260206004820152602260248201527f45524332303a20617070726f766520746f20746865207a65726f20616464726560448201527f73730000000000000000000000000000000000000000000000000000000000006064820152608401610ae7565b6001600160a01b0383811660008181526003602090815260408083209487168084529482529182902085905590518481527f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925910160405180910390a3505050565b6001600160a01b038316611ffd5760405162461bcd60e51b815260206004820152602560248201527f45524332303a207472616e736665722066726f6d20746865207a65726f20616460448201527f64726573730000000000000000000000000000000000000000000000000000006064820152608401610ae7565b6001600160a01b0382166120795760405162461bcd60e51b815260206004820152602360248201527f45524332303a207472616e7366657220746f20746865207a65726f206164647260448201527f65737300000000000000000000000000000000000000000000000000000000006064820152608401610ae7565b600081116120ef5760405162461bcd60e51b815260206004820152602960248201527f5472616e7366657220616d6f756e74206d75737420626520677265617465722060448201527f7468616e207a65726f00000000000000000000000000000000000000000000006064820152608401610ae7565b6120f883611582565b81111561216d5760405162461bcd60e51b815260206004820152603160248201527f596f752061726520747279696e6720746f207472616e73666572206d6f72652060448201527f7468616e20796f75722062616c616e63650000000000000000000000000000006064820152608401610ae7565b6001600160a01b03831660009081526006602052604090205460ff161580156121af57506001600160a01b03821660009081526006602052604090205460ff16155b6121fb5760405162461bcd60e51b815260206004820152600d60248201527f596f7520617265206120626f74000000000000000000000000000000000000006044820152606401610ae7565b6001600160a01b03831660009081526004602052604090205460ff1615801561223d57506001600160a01b03821660009081526004602052604090205460ff16155b80156122515750600854610100900460ff16155b1561241857600d548111156122a85760405162461bcd60e51b815260206004820152601f60248201527f416d6f756e7420697320657863656564696e67206d61785478416d6f756e74006044820152606401610ae7565b6009546001600160a01b038481169116148015906122c85750600f5460ff165b15612360576001600160a01b0383166000908152600e60205260408120546122f09042613747565b905060105481116123435760405162461bcd60e51b815260206004820152601a60248201527f596f75206d757374207761697420636f6f6c446f776e54696d650000000000006044820152606401610ae7565b506001600160a01b0383166000908152600e602052604090204290555b6009546001600160a01b038381169116148015906123805750600f5460ff165b15612418576001600160a01b0382166000908152600e60205260408120546123a89042613747565b905060105481116123fb5760405162461bcd60e51b815260206004820152601a60248201527f596f75206d757374207761697420636f6f6c446f776e54696d650000000000006044820152606401610ae7565b506001600160a01b0382166000908152600e602052604090204290555b6000600c5461242630611582565b6008549111159150610100900460ff16158015612445575060085460ff165b801561244e5750805b801561246857506009546001600160a01b03858116911614155b801561248d57506001600160a01b03841660009081526004602052604090205460ff16155b80156124b257506001600160a01b03831660009081526004602052604090205460ff16155b156124c2576124c2600c54612634565b6001600160a01b038416600090815260046020526040902054610b7c9085908590859060ff168061250b57506001600160a01b03871660009081526004602052604090205460ff165b1561269a565b600080600061251e612a60565b909250905061252d818361375e565b9250505090565b61259f604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b6125a98383612be3565b90506125be8184846125b9612511565b612d5f565b60c088015260a08701526080860152606085015260408401526020830152815292915050565b600080546001600160a01b038381166001600160a01b0319831681178455604051919092169283917f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e09190a35050565b6008805461ff001916610100179055600061265060028361375e565b9050600061265e8284613747565b90504761266a82612e35565b60006126768247613747565b90508015612688576126888482612fcd565b50506008805461ff0019169055505050565b60006126a68383612534565b6001600160a01b03861660009081526005602052604090205490915060ff1615612708576001600160a01b0385166000908152600260205260409020546126ee908490613747565b6001600160a01b0386166000908152600260205260409020555b6001600160a01b03841660009081526005602052604090205460ff161561276b5760e08101516001600160a01b03851660009081526002602052604090205461275191906138d9565b6001600160a01b0385166000908152600260205260409020555b80516001600160a01b0386166000908152600160205260409020546127909190613747565b6001600160a01b03808716600090815260016020908152604080832094909455840151918716815291909120546127c791906138d9565b6001600160a01b03851660009081526001602052604090819020919091558101511515806127fa57506000816101000151115b156128125761281281604001518261010001516130a6565b60008160c00151118061282a57506000816101800151115b15612842576128428160c001518261018001516130db565b60008160600151118061285a57506000816101200151115b156128be576128728160600151826101200151613151565b6011546101408201516040519081526001600160a01b03918216918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b6000816080015111806128d657506000816101400151115b1561293a576128ee81608001518261014001516131e8565b6012546101408201516040519081526001600160a01b03918216918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b60008160a00151118061295257506000816101600151115b156129b65761296a8160a0015182610160015161327f565b6013546101608201516040519081526001600160a01b03918216918716907fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef9060200160405180910390a35b836001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360e001516040516129ff91815260200190565b60405180910390a3306001600160a01b0316856001600160a01b03167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef836101800151604051612a5191815260200190565b60405180910390a35050505050565b600b54600a546000918291825b600754811015612bb257826001600060078481548110612a8f57612a8f613892565b60009182526020808320909101546001600160a01b031683528201929092526040019020541180612afa5750816002600060078481548110612ad357612ad3613892565b60009182526020808320909101546001600160a01b03168352820192909252604001902054115b15612b1057600b54600a54945094505050509091565b6001600060078381548110612b2757612b27613892565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612b569084613747565b92506002600060078381548110612b6f57612b6f613892565b60009182526020808320909101546001600160a01b03168352820192909252604001902054612b9e9083613747565b915080612baa816138be565b915050612a6d565b50600a54600b54612bc3919061375e565b821015612bda57600b54600a549350935050509091565b90939092509050565b612c4e604051806101a00160405280600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081526020016000815260200160008152602001600081525090565b81612c5f5760e08101839052610a9d565b6015546103e890612c709085613873565b612c7a919061375e565b6101008201526016546103e890612c919085613873565b612c9b919061375e565b6101208201526017546103e890612cb29085613873565b612cbc919061375e565b6101408201526018546103e890612cd39085613873565b612cdd919061375e565b6101608201526019546103e890612cf49085613873565b612cfe919061375e565b610180820181905261016082015161014083015161012084015161010085015192939192612d2c9088613747565b612d369190613747565b612d409190613747565b612d4a9190613747565b612d549190613747565b60e082015292915050565b6000808080808080612d71888b613873565b965088612d8f57508594506000935083925082915081905080612e27565b878b6101000151612da09190613873565b9450878b6101200151612db39190613873565b9350878b6101800151612dc69190613873565b9050878b6101400151612dd99190613873565b9250878b6101600151612dec9190613873565b915081838286612dfc898c613747565b612e069190613747565b612e109190613747565b612e1a9190613747565b612e249190613747565b95505b949950949992975094509450565b6040805160028082526060820183526000926020830190803683370190505090503081600081518110612e6a57612e6a613892565b60200260200101906001600160a01b031690816001600160a01b031681525050600860029054906101000a90046001600160a01b03166001600160a01b031663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015612edd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612f0191906138f1565b81600181518110612f1457612f14613892565b6001600160a01b039283166020918202929092010152600854612f409130916201000090041684611e29565b6008546040517f791ac947000000000000000000000000000000000000000000000000000000008152620100009091046001600160a01b03169063791ac94790612f9790859060009086903090429060040161390e565b600060405180830381600087803b158015612fb157600080fd5b505af1158015612fc5573d6000803e3d6000fd5b505050505050565b600854612feb9030906201000090046001600160a01b031684611e29565b6008546014546040517ff305d7190000000000000000000000000000000000000000000000000000000081523060048201526024810185905260006044820181905260648201526001600160a01b0391821660848201524260a482015262010000909204169063f305d71990839060c40160606040518083038185885af115801561307a573d6000803e3d6000fd5b50505050506040513d601f19601f8201168201806040525081019061309f919061397f565b5050505050565b81600b60008282546130b89190613747565b9091555050601a80548291906000906130d29084906138d9565b90915550505050565b80601a60040160008282546130f091906138d9565b90915550503060009081526005602052604090205460ff161561313257306000908152600260205260408120805483929061312c9084906138d9565b90915550505b30600090815260016020526040812080548492906130d29084906138d9565b80601a600101600082825461316691906138d9565b90915550506011546001600160a01b031660009081526005602052604090205460ff16156131be576011546001600160a01b0316600090815260026020526040812080548392906131b89084906138d9565b90915550505b6011546001600160a01b0316600090815260016020526040812080548492906130d29084906138d9565b80601a60020160008282546131fd91906138d9565b90915550506012546001600160a01b031660009081526005602052604090205460ff1615613255576012546001600160a01b03166000908152600260205260408120805483929061324f9084906138d9565b90915550505b6012546001600160a01b0316600090815260016020526040812080548492906130d29084906138d9565b80601a600301600082825461329491906138d9565b90915550506012546001600160a01b031660009081526005602052604090205460ff16156132ec576013546001600160a01b0316600090815260026020526040812080548392906132e69084906138d9565b90915550505b6013546001600160a01b0316600090815260016020526040812080548492906130d29084906138d9565b600060208083528351808285015260005b8181101561334357858101830151858201604001528201613327565b81811115613355576000604083870101525b50601f01601f1916929092016040019392505050565b6001600160a01b0381168114611e2657600080fd5b6000806040838503121561339357600080fd5b823561339e8161336b565b946020939093013593505050565b6000806000606084860312156133c157600080fd5b83356133cc8161336b565b925060208401356133dc8161336b565b929592945050506040919091013590565b6000602082840312156133ff57600080fd5b8135610da78161336b565b60006020828403121561341c57600080fd5b5035919050565b6000806040838503121561343657600080fd5b82356134418161336b565b915060208301356134518161336b565b809150509250929050565b8015158114611e2657600080fd5b6000806040838503121561347d57600080fd5b8235915060208301356134518161345c565b600080600080600060a086880312156134a757600080fd5b505083359560208501359550604085013594606081013594506080013592509050565b634e487b7160e01b600052604160045260246000fd5b604051601f8201601f1916810167ffffffffffffffff81118282101715613509576135096134ca565b604052919050565b600067ffffffffffffffff82111561352b5761352b6134ca565b5060051b60200190565b600082601f83011261354657600080fd5b8135602061355b61355683613511565b6134e0565b82815260059290921b8401810191818101908684111561357a57600080fd5b8286015b8481101561359e5780356135918161336b565b835291830191830161357e565b509695505050505050565b600080604083850312156135bc57600080fd5b823567ffffffffffffffff808211156135d457600080fd5b6135e086838701613535565b93506020915081850135818111156135f757600080fd5b85019050601f8101861361360a57600080fd5b803561361861355682613511565b81815260059190911b8201830190838101908883111561363757600080fd5b928401925b828410156136555783358252928401929084019061363c565b80955050505050509250929050565b6000806040838503121561367757600080fd5b823561339e8161345c565b60006020828403121561369457600080fd5b8135610da78161345c565b600080604083850312156136b257600080fd5b823567ffffffffffffffff8111156136c957600080fd5b6136d585828601613535565b92505060208301356134518161345c565b600080604083850312156136f957600080fd5b82356137048161336b565b915060208301356134518161345c565b60006020828403121561372657600080fd5b8151610da78161345c565b634e487b7160e01b600052601160045260246000fd5b60008282101561375957613759613731565b500390565b60008261377b57634e487b7160e01b600052601260045260246000fd5b500490565b600181815b808511156137bb5781600019048211156137a1576137a1613731565b808516156137ae57918102915b93841c9390800290613785565b509250929050565b6000826137d257506001610a9d565b816137df57506000610a9d565b81600181146137f557600281146137ff5761381b565b6001915050610a9d565b60ff84111561381057613810613731565b50506001821b610a9d565b5060208310610133831016604e8410600b841016171561383e575081810a610a9d565b6138488383613780565b806000190482111561385c5761385c613731565b029392505050565b6000610da760ff8416836137c3565b600081600019048311821515161561388d5761388d613731565b500290565b634e487b7160e01b600052603260045260246000fd5b634e487b7160e01b600052603160045260246000fd5b60006000198214156138d2576138d2613731565b5060010190565b600082198211156138ec576138ec613731565b500190565b60006020828403121561390357600080fd5b8151610da78161336b565b600060a082018783526020878185015260a0604085015281875180845260c086019150828901935060005b8181101561395e5784516001600160a01b031683529383019391830191600101613939565b50506001600160a01b03969096166060850152505050608001529392505050565b60008060006060848603121561399457600080fd5b835192506020840151915060408401519050925092509256fe4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572a2646970667358221220615408ce280580d2fe55cd82ef35b4482f05eed35074b614f858e7f5bd03b7ec64736f6c634300080a0033

Deployed Bytecode Sourcemap

19381:19757:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;22578:83;;;;;;;;;;-1:-1:-1;22648:5:0;;;;;;;;;;;;;;;;22578:83;;;;22648:5;22578:83;:::i;:::-;;;;;;;;23486:161;;;;;;;;;;-1:-1:-1;23486:161:0;;;;;:::i;:::-;;:::i;:::-;;;1260:14:1;;1253:22;1235:41;;1223:2;1208:18;23486:161:0;1095:187:1;38939:154:0;;;;;;;;;;-1:-1:-1;38939:154:0;;;;;:::i;:::-;;:::i;:::-;;22851:95;;;;;;;;;;-1:-1:-1;22931:7:0;;22851:95;;;1894:25:1;;;1882:2;1867:18;22851:95:0;1748:177:1;23655:422:0;;;;;;;;;;-1:-1:-1;23655:422:0;;;;;:::i;:::-;;:::i;36485:214::-;;;;;;;;;;-1:-1:-1;36485:214:0;;;;;:::i;:::-;;:::i;25285:248::-;;;;;;;;;;-1:-1:-1;25285:248:0;;;;;:::i;:::-;;:::i;36707:113::-;;;;;;;;;;-1:-1:-1;36707:113:0;;;;;:::i;:::-;;:::i;22760:83::-;;;;;;;;;;-1:-1:-1;22760:83:0;;19968:1;2509:36:1;;2497:2;2482:18;22760:83:0;2367:184:1;25882:475:0;;;;;;;;;;-1:-1:-1;25882:475:0;;;;;:::i;:::-;;:::i;24085:215::-;;;;;;;;;;-1:-1:-1;24085:215:0;;;;;:::i;:::-;;:::i;37827:98::-;;;;;;;;;;-1:-1:-1;37827:98:0;;;;;:::i;:::-;-1:-1:-1;;;;;37902:15:0;37879:4;37902:15;;;:6;:15;;;;;;;;;37827:98;37661:154;;;;;;;;;;-1:-1:-1;37661:154:0;;;;;:::i;:::-;;:::i;26367:111::-;;;;;;;;;;-1:-1:-1;26367:111:0;;;;;:::i;:::-;;:::i;20705:71::-;;;;;;;;;;-1:-1:-1;20705:71:0;;;;-1:-1:-1;;;;;20705:71:0;;;;;;-1:-1:-1;;;;;3113:55:1;;;3095:74;;3083:2;3068:18;20705:71:0;2949:226:1;24821:456:0;;;;;;;;;;-1:-1:-1;24821:456:0;;;;;:::i;:::-;;:::i;25541:333::-;;;;;;;;;;-1:-1:-1;25541:333:0;;;;;:::i;:::-;;:::i;26606:123::-;;;;;;;;;;-1:-1:-1;26606:123:0;;;;;:::i;:::-;-1:-1:-1;;;;;26694:27:0;26670:4;26694:27;;;:18;:27;;;;;;;;;26606:123;26737:331;;;;;;;;;;-1:-1:-1;26737:331:0;;;;;:::i;:::-;;:::i;19817:23::-;;;;;;;;;;-1:-1:-1;19817:23:0;;;;;;;;37937:560;;;;;;;;;;-1:-1:-1;37937:560:0;;;;;:::i;:::-;;:::i;22954:198::-;;;;;;;;;;-1:-1:-1;22954:198:0;;;;;:::i;:::-;;:::i;20627:71::-;;;;;;;;;;-1:-1:-1;20627:71:0;;;;-1:-1:-1;;;;;20627:71:0;;;18158:94;;;;;;;;;;;;;:::i;21044:41::-;;;;;;;;;;-1:-1:-1;21044:41:0;;;;;;;;;;;;;;;;;;;;;;6877:25:1;;;6933:2;6918:18;;6911:34;;;;6961:18;;;6954:34;;;;7019:2;7004:18;;6997:34;7062:3;7047:19;;7040:35;6864:3;6849:19;21044:41:0;6618:463:1;35786:229:0;;;;;;;;;;-1:-1:-1;35786:229:0;;;;;:::i;:::-;;:::i;24693:120::-;;;;;;;;;;-1:-1:-1;24693:120:0;;;;;:::i;:::-;-1:-1:-1;;;;;24785:20:0;24761:4;24785:20;;;:11;:20;;;;;;;;;24693:120;37075:186;;;;;;;;;;-1:-1:-1;37075:186:0;;;;;:::i;:::-;;:::i;20223:62::-;;;;;;;;;;;;;;;;17935:87;;;;;;;;;;-1:-1:-1;17981:7:0;18008:6;-1:-1:-1;;;;;18008:6:0;17935:87;;36966:101;;;;;;;;;;-1:-1:-1;36966:101:0;;;;;:::i;:::-;;:::i;21260:36::-;;;;;;;;;;-1:-1:-1;21260:36:0;;;;;;;;;;;;;;;;;;38569:193;;;;;;;;;;-1:-1:-1;38569:193:0;;;;;:::i;:::-;;:::i;24308:377::-;;;;;;;;;;-1:-1:-1;24308:377:0;;;;;:::i;:::-;;:::i;20544:76::-;;;;;;;;;;-1:-1:-1;20544:76:0;;;;-1:-1:-1;;;;;20544:76:0;;;20319:46;;;;;;;;;;-1:-1:-1;20319:46:0;;;;;:::i;:::-;;;;;;;;;;;;;;19905:19;;;;;;;;;;-1:-1:-1;19905:19:0;;;;-1:-1:-1;;;;;19905:19:0;;;23160:167;;;;;;;;;;-1:-1:-1;23160:167:0;;;;;:::i;:::-;;:::i;36244:233::-;;;;;;;;;;-1:-1:-1;36244:233:0;;;;;:::i;:::-;;:::i;37455:194::-;;;;;;;;;;-1:-1:-1;37455:194:0;;;;;:::i;:::-;;:::i;36023:213::-;;;;;;;;;;-1:-1:-1;36023:213:0;;;;;:::i;:::-;;:::i;20462:75::-;;;;;;;;;;-1:-1:-1;20462:75:0;;;;-1:-1:-1;;;;;20462:75:0;;;36828:130;;;;;;;;;;-1:-1:-1;36828:130:0;;;;;:::i;:::-;;:::i;20413:40::-;;;;;;;;;;;;;;;;23335:143;;;;;;;;;;-1:-1:-1;23335:143:0;;;;;:::i;:::-;-1:-1:-1;;;;;23443:18:0;;;23416:7;23443:18;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;23335:143;37269:174;;;;;;;;;;-1:-1:-1;37269:174:0;;;;;:::i;:::-;;:::i;20145:71::-;;;;;;;;;;;;;;;;26486:110;;;;;;;;;;-1:-1:-1;26486:110:0;;;;;:::i;:::-;;:::i;20372:34::-;;;;;;;;;;-1:-1:-1;20372:34:0;;;;;;;;18260:192;;;;;;;;;;-1:-1:-1;18260:192:0;;;;;:::i;:::-;;:::i;19877:21::-;;;;;;;;;;-1:-1:-1;19877:21:0;;;;;;;-1:-1:-1;;;;;19877:21:0;;;23486:161;23561:4;23578:39;17436:10;23601:7;23610:6;23578:8;:39::i;:::-;-1:-1:-1;23635:4:0;23486:161;;;;;:::o;38939:154::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;;;;;;;;;39044:41:::1;::::0;;;;-1:-1:-1;;;;;9314:55:1;;;39044:41:0::1;::::0;::::1;9296:74:1::0;9386:18;;;9379:34;;;39044:27:0;::::1;::::0;::::1;::::0;9269:18:1;;39044:41:0::1;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;38939:154:::0;;;:::o;23655:422::-;23761:4;23778:36;23788:6;23796:9;23807:6;23778:9;:36::i;:::-;-1:-1:-1;;;;;23854:19:0;;23827:24;23854:19;;;:11;:19;;;;;;;;17436:10;23854:33;;;;;;;;23906:26;;;;23898:79;;;;-1:-1:-1;;;23898:79:0;;9876:2:1;23898:79:0;;;9858:21:1;9915:2;9895:18;;;9888:30;9954:34;9934:18;;;9927:62;10025:10;10005:18;;;9998:38;10053:19;;23898:79:0;9674:404:1;23898:79:0;23988:57;23997:6;17436:10;24019:25;24038:6;24019:16;:25;:::i;:::-;23988:8;:57::i;:::-;-1:-1:-1;24065:4:0;;23655:422;-1:-1:-1;;;;23655:422:0:o;36485:214::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;36568:11:::1;::::0;-1:-1:-1;;;;;36568:24:0;;::::1;:11:::0;::::1;:24;;36560:55;;;::::0;-1:-1:-1;;;36560:55:0;;10604:2:1;36560:55:0::1;::::0;::::1;10586:21:1::0;10643:2;10623:18;;;10616:30;10682:20;10662:18;;;10655:48;10720:18;;36560:55:0::1;10402:342:1::0;36560:55:0::1;36626:11;:23:::0;;-1:-1:-1;;;;;36626:23:0;;::::1;-1:-1:-1::0;;;;;;36626:23:0;;::::1;::::0;::::1;::::0;;:11:::1;36660:31:::0;:18:::1;:31;::::0;36485:214::o;25285:248::-;25351:7;25390;;25379;:18;;25371:73;;;;-1:-1:-1;;;25371:73:0;;10951:2:1;25371:73:0;;;10933:21:1;10990:2;10970:18;;;10963:30;11029:34;11009:18;;;11002:62;11100:12;11080:18;;;11073:40;11130:19;;25371:73:0;10749:406:1;25371:73:0;25455:19;25478:10;:8;:10::i;:::-;25455:33;-1:-1:-1;25506:19:0;25455:33;25506:7;:19;:::i;:::-;25499:26;25285:248;-1:-1:-1;;;25285:248:0:o;36707:113::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;36799:13:::1;19968:1;36799:2;:13;:::i;:::-;36790:22;::::0;:6;:22:::1;:::i;:::-;36776:11;:36:::0;-1:-1:-1;36707:113:0:o;25882:475::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;-1:-1:-1;;;;;25964:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;25956:56;;;::::0;-1:-1:-1;;;25956:56:0;;13197:2:1;25956:56:0::1;::::0;::::1;13179:21:1::0;13236:2;13216:18;;;13209:30;13275:25;13255:18;;;13248:53;13318:18;;25956:56:0::1;12995:347:1::0;25956:56:0::1;26028:9;26023:327;26047:9;:16:::0;26043:20;::::1;26023:327;;;26105:7;-1:-1:-1::0;;;;;26089:23:0::1;:9;26099:1;26089:12;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;-1:-1:-1;;;;;26089:12:0::1;:23;26085:254;;;26148:9;26158:16:::0;;:20:::1;::::0;26177:1:::1;::::0;26158:20:::1;:::i;:::-;26148:31;;;;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;::::1;::::0;26133:9:::1;:12:::0;;-1:-1:-1;;;;;26148:31:0;;::::1;::::0;26143:1;;26133:12;::::1;;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;;;::::1;:46:::0;;-1:-1:-1;;;;;;26133:46:0::1;-1:-1:-1::0;;;;;26133:46:0;;::::1;;::::0;;26198:16;;::::1;::::0;;:7:::1;:16:::0;;;;;;:20;;;26237:11:::1;:20:::0;;;;:28;;-1:-1:-1;;26237:28:0::1;::::0;;26284:9:::1;:15:::0;;;::::1;;;;:::i;:::-;;::::0;;;::::1;::::0;;;;-1:-1:-1;;26284:15:0;;;;;-1:-1:-1;;;;;;26284:15:0::1;::::0;;;;;26023:327:::1;25882:475:::0;:::o;26085:254::-:1;26065:3:::0;::::1;::::0;::::1;:::i;:::-;;;;26023:327;;;;25882:475:::0;:::o;24085:215::-;17436:10;24173:4;24222:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;24222:34:0;;;;;;;;;;24173:4;;24190:80;;24213:7;;24222:47;;24259:10;;24222:47;:::i;37661:154::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;37755:6:::1;:27:::0;;;::::1;::::0;-1:-1:-1;;;;;37755:27:0;;::::1;;;::::0;;37793:4:::1;:14:::0;;-1:-1:-1;;;;;;37793:14:0::1;::::0;;;::::1;;::::0;;37661:154::o;26367:111::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;-1:-1:-1;;;;;26436:27:0::1;;::::0;;;:18:::1;:27;::::0;;;;:34;;-1:-1:-1;;26436:34:0::1;26466:4;26436:34;::::0;;26367:111::o;24821:456::-;24911:7;24950;;24939;:18;;24931:62;;;;-1:-1:-1;;;24931:62:0;;14200:2:1;24931:62:0;;;14182:21:1;14239:2;14219:18;;;14212:30;14278:33;14258:18;;;14251:61;14329:18;;24931:62:0;13998:355:1;24931:62:0;25009:17;25004:266;;25043:28;25074:25;25085:7;25094:4;25074:10;:25::i;:::-;25121:9;;-1:-1:-1;25114:16:0;;-1:-1:-1;25114:16:0;25004:266;25163:28;25194:25;25205:7;25214:4;25194:10;:25::i;:::-;25241:17;;;;-1:-1:-1;25234:24:0;;-1:-1:-1;25234:24:0;25541:333;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;-1:-1:-1;;;;;25624:20:0;::::1;;::::0;;;:11:::1;:20;::::0;;;;;::::1;;25623:21;25615:61;;;::::0;-1:-1:-1;;;25615:61:0;;14560:2:1;25615:61:0::1;::::0;::::1;14542:21:1::0;14599:2;14579:18;;;14572:30;14638:29;14618:18;;;14611:57;14685:18;;25615:61:0::1;14358:351:1::0;25615:61:0::1;-1:-1:-1::0;;;;;25690:16:0;::::1;25709:1;25690:16:::0;;;:7:::1;:16;::::0;;;;;:20;25687:108:::1;;-1:-1:-1::0;;;;;25766:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;;25746:37:::1;::::0;:19:::1;:37::i;:::-;-1:-1:-1::0;;;;;25727:16:0;::::1;;::::0;;;:7:::1;:16;::::0;;;;:56;25687:108:::1;-1:-1:-1::0;;;;;25805:20:0::1;;::::0;;;:11:::1;:20;::::0;;;;:27;;-1:-1:-1;;25805:27:0::1;25828:4;25805:27:::0;;::::1;::::0;;;25843:9:::1;:23:::0;;;;::::1;::::0;;;;;;::::1;::::0;;-1:-1:-1;;;;;;25843:23:0::1;::::0;;::::1;::::0;;25541:333::o;26737:331::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;26871:5:::1;:16:::0;;;26898:14;:26;;;26935:15;:28;;;26974:10;:18;;;27003:15;:28;;;27047:13:::1;::::0;::::1;::::0;26871:9:::1;::::0;27047:13:::1;26737:331:::0;;;;;:::o;37937:560::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;38074:7:::1;:14;38053:10;:17;:35;38045:59;;;::::0;-1:-1:-1;;;38045:59:0;;14916:2:1;38045:59:0::1;::::0;::::1;14898:21:1::0;14955:2;14935:18;;;14928:30;14994:14;14974:18;;;14967:42;15026:18;;38045:59:0::1;14714:336:1::0;38045:59:0::1;38133:10;38116:14;38155:335;38172:10;:17;38170:1;:19;38155:335;;;38210:17;38230:10;38241:1;38230:13;;;;;;;;:::i;:::-;;;;;;;38210:33;;38258:15;38287:10;:8;:10::i;:::-;38276:7;38284:1;38276:10;;;;;;;;:::i;:::-;;;;;;;:21;;;;:::i;:::-;-1:-1:-1::0;;;;;38330:15:0;::::1;;::::0;;;:7:::1;:15;::::0;;;;;38258:39;;-1:-1:-1;38330:24:0::1;::::0;38258:39;;38330:24:::1;:::i;:::-;-1:-1:-1::0;;;;;38312:15:0;;::::1;;::::0;;;:7:::1;:15;::::0;;;;;:42;;;;38390:18;;::::1;::::0;;;;:28:::1;::::0;38411:7;;38390:28:::1;:::i;:::-;-1:-1:-1::0;;;;;38369:18:0;;::::1;;::::0;;;:7:::1;:18;::::0;;;;:49;;;;38466:10;;38438:39;;::::1;::::0;::::1;::::0;38466:7;;38474:1;;38466:10;::::1;;;;;:::i;:::-;;;;;;;38438:39;;;;1894:25:1::0;;1882:2;1867:18;;1748:177;38438:39:0::1;;;;;;;;38195:295;;38191:3;;;;;:::i;:::-;;;;38155:335;;22954:198:::0;-1:-1:-1;;;;;23044:20:0;;23020:7;23044:20;;;:11;:20;;;;;;;;23040:49;;;-1:-1:-1;;;;;;23073:16:0;;;;;:7;:16;;;;;;;22954:198::o;23040:49::-;-1:-1:-1;;;;;23127:16:0;;;;;;:7;:16;;;;;;23107:37;;:19;:37::i;18158:94::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;18223:21:::1;18241:1;18223:9;:21::i;:::-;18158:94::o:0;35786:229::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;35872:15:::1;::::0;-1:-1:-1;;;;;35872:28:0;;::::1;:15:::0;::::1;:28;;35864:59;;;::::0;-1:-1:-1;;;35864:59:0;;10604:2:1;35864:59:0::1;::::0;::::1;10586:21:1::0;10643:2;10623:18;;;10616:30;10682:20;10662:18;;;10655:48;10720:18;;35864:59:0::1;10402:342:1::0;35864:59:0::1;35934:15;:27:::0;;-1:-1:-1;;;;;35934:27:0;;::::1;-1:-1:-1::0;;;;;;35934:27:0;;::::1;::::0;::::1;::::0;;:15:::1;35972:35:::0;:18:::1;:35;::::0;35786:229::o;37075:186::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;37175:15:::1;:26:::0;;-1:-1:-1;;37175:26:0::1;::::0;::::1;;;::::0;;37227::::1;:14:::0;-1:-1:-1;37227:26:0::1;:::i;:::-;37212:12;:41:::0;-1:-1:-1;;37075:186:0:o;36966:101::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;37037:11:::1;:22:::0;;-1:-1:-1;;37037:22:0::1;::::0;::::1;;::::0;;;::::1;::::0;;36966:101::o;38569:193::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;38669:9:::1;38644:21;:34;;38636:71;;;::::0;-1:-1:-1;;;38636:71:0;;15257:2:1;38636:71:0::1;::::0;::::1;15239:21:1::0;15296:2;15276:18;;;15269:30;15335:26;15315:18;;;15308:54;15379:18;;38636:71:0::1;15055:348:1::0;38636:71:0::1;17981:7:::0;18008:6;;38718:36:::1;::::0;-1:-1:-1;;;;;18008:6:0;;;;38718:36;::::1;;;::::0;38744:9;;38718:36;17981:7;38718:36;38744:9;18008:6;38718:36;::::1;;;;;;;;;;;;;::::0;::::1;;;;24308:377:::0;17436:10;24401:4;24445:25;;;:11;:25;;;;;;;;-1:-1:-1;;;;;24445:34:0;;;;;;;;;;24498:35;;;;24490:85;;;;-1:-1:-1;;;24490:85:0;;15610:2:1;24490:85:0;;;15592:21:1;15649:2;15629:18;;;15622:30;15688:34;15668:18;;;15661:62;15759:7;15739:18;;;15732:35;15784:19;;24490:85:0;15408:401:1;24490:85:0;24586:67;17436:10;24609:7;24618:34;24637:15;24618:16;:34;:::i;24586:67::-;-1:-1:-1;24673:4:0;;24308:377;-1:-1:-1;;;24308:377:0:o;23160:167::-;23238:4;23255:42;17436:10;23279:9;23290:6;23255:9;:42::i;36244:233::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;36331:16:::1;::::0;-1:-1:-1;;;;;36331:29:0;;::::1;:16:::0;::::1;:29;;36323:60;;;::::0;-1:-1:-1;;;36323:60:0;;10604:2:1;36323:60:0::1;::::0;::::1;10586:21:1::0;10643:2;10623:18;;;10616:30;10682:20;10662:18;;;10655:48;10720:18;;36323:60:0::1;10402:342:1::0;36323:60:0::1;36394:16;:28:::0;;-1:-1:-1;;;;;36394:28:0;;::::1;-1:-1:-1::0;;;;;;36394:28:0;;::::1;::::0;::::1;::::0;;:16:::1;36433:36:::0;:18:::1;:36;::::0;36244:233::o;37455:194::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;37548:9:::1;37544:98;37567:8;:15;37563:1;:19;37544:98;;;37625:5;37603:6;:19;37610:8;37619:1;37610:11;;;;;;;;:::i;:::-;;::::0;;::::1;::::0;;;;;;;-1:-1:-1;;;;;37603:19:0::1;::::0;;;::::1;::::0;;;;;;-1:-1:-1;37603:19:0;:27;;-1:-1:-1;;37603:27:0::1;::::0;::::1;;::::0;;;::::1;::::0;;37584:3;::::1;::::0;::::1;:::i;:::-;;;;37544:98;;;;37455:194:::0;;:::o;36023:213::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;36105:11:::1;::::0;-1:-1:-1;;;;;36105:24:0;;::::1;:11:::0;::::1;:24;;36097:55;;;::::0;-1:-1:-1;;;36097:55:0;;10604:2:1;36097:55:0::1;::::0;::::1;10586:21:1::0;10643:2;10623:18;;;10616:30;10682:20;10662:18;;;10655:48;10720:18;;36097:55:0::1;10402:342:1::0;36097:55:0::1;36163:11;:23:::0;;-1:-1:-1;;;;;36163:23:0;;::::1;-1:-1:-1::0;;;;;;36163:23:0;;::::1;::::0;::::1;::::0;;:11:::1;36197:31:::0;:18:::1;:31;::::0;36023:213::o;36828:130::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;36937:13:::1;19968:1;36937:2;:13;:::i;:::-;36928:22;::::0;:6;:22:::1;:::i;:::-;36907:18;:43:::0;-1:-1:-1;36828:130:0:o;37269:174::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;-1:-1:-1;;;;;37355:15:0;::::1;;::::0;;;:6:::1;:15;::::0;;;;;::::1;;:24;;::::0;::::1;;;;37347:54;;;::::0;-1:-1:-1;;;37347:54:0;;16016:2:1;37347:54:0::1;::::0;::::1;15998:21:1::0;16055:2;16035:18;;;16028:30;16094:19;16074:18;;;16067:47;16131:18;;37347:54:0::1;15814:341:1::0;37347:54:0::1;-1:-1:-1::0;;;;;37412:15:0;;;::::1;;::::0;;;:6:::1;:15;::::0;;;;:23;;-1:-1:-1;;37412:23:0::1;::::0;::::1;;::::0;;;::::1;::::0;;37269:174::o;26486:110::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;-1:-1:-1;;;;;26553:27:0::1;26583:5;26553:27:::0;;;:18:::1;:27;::::0;;;;:35;;-1:-1:-1;;26553:35:0::1;::::0;;26486:110::o;18260:192::-;17981:7;18008:6;-1:-1:-1;;;;;18008:6:0;17436:10;18070:23;18062:68;;;;-1:-1:-1;;;18062:68:0;;8963:2:1;18062:68:0;;;8945:21:1;;;8982:18;;;8975:30;-1:-1:-1;;;;;;;;;;;9021:18:1;;;9014:62;9093:18;;18062:68:0;8761:356:1;18062:68:0;-1:-1:-1;;;;;18349:22:0;::::1;18341:73;;;::::0;-1:-1:-1;;;18341:73:0;;16362:2:1;18341:73:0::1;::::0;::::1;16344:21:1::0;16401:2;16381:18;;;16374:30;16440:34;16420:18;;;16413:62;16511:8;16491:18;;;16484:36;16537:19;;18341:73:0::1;16160:402:1::0;18341:73:0::1;18425:19;18435:8;18425:9;:19::i;:::-;18260:192:::0;:::o;30693:335::-;-1:-1:-1;;;;;30786:19:0;;30778:68;;;;-1:-1:-1;;;30778:68:0;;16769:2:1;30778:68:0;;;16751:21:1;16808:2;16788:18;;;16781:30;16847:34;16827:18;;;16820:62;16918:6;16898:18;;;16891:34;16942:19;;30778:68:0;16567:400:1;30778:68:0;-1:-1:-1;;;;;30865:21:0;;30857:68;;;;-1:-1:-1;;;30857:68:0;;17174:2:1;30857:68:0;;;17156:21:1;17213:2;17193:18;;;17186:30;17252:34;17232:18;;;17225:62;17323:4;17303:18;;;17296:32;17345:19;;30857:68:0;16972:398:1;30857:68:0;-1:-1:-1;;;;;30936:18:0;;;;;;;:11;:18;;;;;;;;:27;;;;;;;;;;;;;:36;;;30988:32;;1894:25:1;;;30988:32:0;;1867:18:1;30988:32:0;;;;;;;30693:335;;;:::o;31038:1563::-;-1:-1:-1;;;;;31126:18:0;;31118:68;;;;-1:-1:-1;;;31118:68:0;;17577:2:1;31118:68:0;;;17559:21:1;17616:2;17596:18;;;17589:30;17655:34;17635:18;;;17628:62;17726:7;17706:18;;;17699:35;17751:19;;31118:68:0;17375:401:1;31118:68:0;-1:-1:-1;;;;;31205:16:0;;31197:64;;;;-1:-1:-1;;;31197:64:0;;17983:2:1;31197:64:0;;;17965:21:1;18022:2;18002:18;;;17995:30;18061:34;18041:18;;;18034:62;18132:5;18112:18;;;18105:33;18155:19;;31197:64:0;17781:399:1;31197:64:0;31289:1;31280:6;:10;31272:64;;;;-1:-1:-1;;;31272:64:0;;18387:2:1;31272:64:0;;;18369:21:1;18426:2;18406:18;;;18399:30;18465:34;18445:18;;;18438:62;18536:11;18516:18;;;18509:39;18565:19;;31272:64:0;18185:405:1;31272:64:0;31365:15;31375:4;31365:9;:15::i;:::-;31355:6;:25;;31347:86;;;;-1:-1:-1;;;31347:86:0;;18797:2:1;31347:86:0;;;18779:21:1;18836:2;18816:18;;;18809:30;18875:34;18855:18;;;18848:62;18946:19;18926:18;;;18919:47;18983:19;;31347:86:0;18595:413:1;31347:86:0;-1:-1:-1;;;;;31453:12:0;;;;;;:6;:12;;;;;;;;31452:13;:28;;;;-1:-1:-1;;;;;;31470:10:0;;;;;;:6;:10;;;;;;;;31469:11;31452:28;31444:54;;;;-1:-1:-1;;;31444:54:0;;19215:2:1;31444:54:0;;;19197:21:1;19254:2;19234:18;;;19227:30;19293:15;19273:18;;;19266:43;19326:18;;31444:54:0;19013:337:1;31444:54:0;-1:-1:-1;;;;;31525:24:0;;;;;;:18;:24;;;;;;;;31524:25;:52;;;;-1:-1:-1;;;;;;31554:22:0;;;;;;:18;:22;;;;;;;;31553:23;31524:52;:65;;;;-1:-1:-1;31581:8:0;;;;;;;31580:9;31524:65;31521:709;;;31623:11;;31613:6;:21;;31605:65;;;;-1:-1:-1;;;31605:65:0;;19557:2:1;31605:65:0;;;19539:21:1;19596:2;19576:18;;;19569:30;19635:33;19615:18;;;19608:61;19686:18;;31605:65:0;19355:355:1;31605:65:0;31698:4;;-1:-1:-1;;;;;31690:12:0;;;31698:4;;31690:12;;;;:31;;-1:-1:-1;31706:15:0;;;;31690:31;31687:261;;;-1:-1:-1;;;;;31780:16:0;;31741:18;31780:16;;;:10;:16;;;;;;31762:34;;:15;:34;:::i;:::-;31741:55;;31836:12;;31823:10;:25;31815:64;;;;-1:-1:-1;;;31815:64:0;;19917:2:1;31815:64:0;;;19899:21:1;19956:2;19936:18;;;19929:30;19995:28;19975:18;;;19968:56;20041:18;;31815:64:0;19715:350:1;31815:64:0;-1:-1:-1;;;;;;31898:16:0;;;;;;:10;:16;;;;;31917:15;31898:34;;31687:261;31971:4;;-1:-1:-1;;;;;31965:10:0;;;31971:4;;31965:10;;;;:29;;-1:-1:-1;31979:15:0;;;;31965:29;31962:257;;;-1:-1:-1;;;;;32054:14:0;;32014:19;32054:14;;;:10;:14;;;;;;32036:32;;:15;:32;:::i;:::-;32014:54;;32109:12;;32095:11;:26;32087:65;;;;-1:-1:-1;;;32087:65:0;;19917:2:1;32087:65:0;;;19899:21:1;19956:2;19936:18;;;19929:30;19995:28;19975:18;;;19968:56;20041:18;;32087:65:0;19715:350:1;32087:65:0;-1:-1:-1;;;;;;32171:14:0;;;;;;:10;:14;;;;;32188:15;32171:32;;31962:257;32250:12;32293:18;;32265:24;32283:4;32265:9;:24::i;:::-;32326:8;;-1:-1:-1;;32265:46:0;;-1:-1:-1;32326:8:0;;;;;32325:9;:24;;;;-1:-1:-1;32338:11:0;;;;32325:24;:35;;;;;32353:7;32325:35;:51;;;;-1:-1:-1;32372:4:0;;-1:-1:-1;;;;;32364:12:0;;;32372:4;;32364:12;;32325:51;:80;;;;-1:-1:-1;;;;;;32381:24:0;;;;;;:18;:24;;;;;;;;32380:25;32325:80;:107;;;;-1:-1:-1;;;;;;32410:22:0;;;;;;:18;:22;;;;;;;;32409:23;32325:107;32322:172;;;32448:34;32463:18;;32448:14;:34::i;:::-;-1:-1:-1;;;;;32541:24:0;;;;;;:18;:24;;;;;;32506:87;;32521:4;;32527:2;;32531:6;;32541:24;;;:50;;-1:-1:-1;;;;;;32569:22:0;;;;;;:18;:22;;;;;;;;32541:50;32539:53;32506:14;:87::i;29979:158::-;30020:7;30041:15;30058;30077:19;:17;:19::i;:::-;30040:56;;-1:-1:-1;30040:56:0;-1:-1:-1;30114:15:0;30040:56;;30114:15;:::i;:::-;30107:22;;;;29979:158;:::o;28202:407::-;28275:36;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28275:36:0;28336:29;28348:7;28357;28336:11;:29::i;:::-;28324:41;;28522:52;28534:9;28545:7;28554;28563:10;:8;:10::i;:::-;28522:11;:52::i;:::-;28498:20;;;28376:198;28481:15;;;28376:198;28459:20;;;28376:198;28439:19;;;28376:198;28423:14;;;28376:198;28396:25;;;28376:198;;;28202:407;;;;:::o;18460:173::-;18516:16;18535:6;;-1:-1:-1;;;;;18552:17:0;;;-1:-1:-1;;;;;;18552:17:0;;;;;;18585:40;;18535:6;;;;;;;18585:40;;18516:16;18585:40;18505:128;18460:173;:::o;34120:581::-;21805:8;:15;;-1:-1:-1;;21805:15:0;;;;;;34275:10:::1;34284:1;34275:6:::0;:10:::1;:::i;:::-;34240:45:::0;-1:-1:-1;34296:14:0::1;34313:33;34240:45:::0;34313:6;:33:::1;:::i;:::-;34296:50:::0;-1:-1:-1;34384:21:0::1;34416:24;34296:50:::0;34416:16:::1;:24::i;:::-;34451:29;34483:38;34507:14:::0;34483:21:::1;:38;:::i;:::-;34451:70:::0;-1:-1:-1;34537:25:0;;34534:158:::1;;34619:61;34632:24;34658:21;34619:12;:61::i;:::-;-1:-1:-1::0;;21843:8:0;:16;;-1:-1:-1;;21843:16:0;;;-1:-1:-1;;;34120:581:0:o;32684:1428::-;32795:28;32826;32837:7;32846;32826:10;:28::i;:::-;-1:-1:-1;;;;;32871:19:0;;;;;;:11;:19;;;;;;32795:59;;-1:-1:-1;32871:19:0;;32867:115;;;-1:-1:-1;;;;;32947:15:0;;;;;;:7;:15;;;;;;:23;;32963:7;;32947:23;:::i;:::-;-1:-1:-1;;;;;32929:15:0;;;;;;:7;:15;;;;;:41;32867:115;-1:-1:-1;;;;;32996:22:0;;;;;;:11;:22;;;;;;;;32992:130;;;33093:17;;;;-1:-1:-1;;;;;33074:18:0;;;;;;:7;:18;;;;;;:36;;33093:17;33074:36;:::i;:::-;-1:-1:-1;;;;;33053:18:0;;;;;;:7;:18;;;;;:57;32992:130;33168:9;;-1:-1:-1;;;;;33152:15:0;;33168:9;33152:15;;;:7;:15;;;;;;:25;;33168:9;33152:25;:::i;:::-;-1:-1:-1;;;;;33134:15:0;;;;;;;:7;:15;;;;;;;;:43;;;;33228:17;;;33209:18;;;;;;;;;;:36;;33228:17;33209:36;:::i;:::-;-1:-1:-1;;;;;33188:18:0;;;;;;:7;:18;;;;;;;:57;;;;33269:6;;;:10;;;:24;;;33292:1;33283;:6;;;:10;33269:24;33266:56;;;33295:27;33307:1;:6;;;33315:1;:6;;;33295:11;:27::i;:::-;33351:1;33336;:12;;;:16;:36;;;;33371:1;33356;:12;;;:16;33336:36;33333:109;;;33389:41;33404:1;:12;;;33417:1;:12;;;33389:14;:41::i;:::-;33469:1;33455;:11;;;:15;:34;;;;33488:1;33474;:11;;;:15;33455:34;33452:171;;;33505:39;33519:1;:11;;;33532:1;:11;;;33505:13;:39::i;:::-;33581:15;;33598:12;;;;33564:47;;1894:25:1;;;-1:-1:-1;;;;;33581:15:0;;;;33564:47;;;;;1882:2:1;1867:18;33564:47:0;;;;;;;33452:171;33651:1;33636;:12;;;:16;:36;;;;33671:1;33656;:12;;;:16;33636:36;33633:177;;;33688:42;33703:1;:12;;;33717:1;:12;;;33688:14;:42::i;:::-;33767:16;;33785:12;;;;33750:48;;1894:25:1;;;-1:-1:-1;;;;;33767:16:0;;;;33750:48;;;;;1882:2:1;1867:18;33750:48:0;;;;;;;33633:177;33833:1;33823;:7;;;:11;:26;;;;33848:1;33838;:7;;;:11;33823:26;33820:142;;;33865:27;33875:1;:7;;;33884:1;:7;;;33865:9;:27::i;:::-;33929:11;;33942:7;;;;33912:38;;1894:25:1;;;-1:-1:-1;;;;;33929:11:0;;;;33912:38;;;;;1882:2:1;1867:18;33912:38:0;;;;;;;33820:142;34004:9;-1:-1:-1;;;;;33987:46:0;33996:6;-1:-1:-1;;;;;33987:46:0;;34015:1;:17;;;33987:46;;;;1894:25:1;;1882:2;1867:18;;1748:177;33987:46:0;;;;;;;;34074:4;-1:-1:-1;;;;;34049:45:0;34058:6;-1:-1:-1;;;;;34049:45:0;;34081:1;:12;;;34049:45;;;;1894:25:1;;1882:2;1867:18;;1748:177;34049:45:0;;;;;;;;32782:1330;32684:1428;;;;:::o;30145:540::-;30242:7;;30278;;30195;;;;;30296:279;30320:9;:16;30316:20;;30296:279;;;30386:7;30362;:21;30370:9;30380:1;30370:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;30370:12:0;30362:21;;;;;;;;;;;;;:31;;:66;;;30421:7;30397;:21;30405:9;30415:1;30405:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;30405:12:0;30397:21;;;;;;;;;;;;;:31;30362:66;30358:97;;;30438:7;;30447;;30430:25;;;;;;;30145:540;;:::o;30358:97::-;30488:7;:21;30496:9;30506:1;30496:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;30496:12:0;30488:21;;;;;;;;;;;;;30480:29;;:7;:29;:::i;:::-;30470:39;;30542:7;:21;30550:9;30560:1;30550:12;;;;;;;;:::i;:::-;;;;;;;;;;;;;-1:-1:-1;;;;;30550:12:0;30542:21;;;;;;;;;;;;;30534:29;;:7;:29;:::i;:::-;30524:39;-1:-1:-1;30338:3:0;;;;:::i;:::-;;;;30296:279;;;;30607:7;;30599;;:15;;;;:::i;:::-;30589:7;:25;30585:56;;;30624:7;;30633;;30616:25;;;;;;30145:540;;:::o;30585:56::-;30660:7;;30669;;-1:-1:-1;30145:540:0;-1:-1:-1;30145:540:0:o;28617:576::-;28691:28;-1:-1:-1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;28691:28:0;28738:7;28734:86;;28760:17;;;:27;;;28800:8;;28734:86;28857:5;:9;28867:4;;28849:17;;:7;:17;:::i;:::-;:22;;;;:::i;:::-;28840:6;;;:31;28904:14;;28919:4;;28896:22;;:7;:22;:::i;:::-;:27;;;;:::i;:::-;28882:11;;;:41;28957:15;;28973:4;;28949:23;;:7;:23;:::i;:::-;:28;;;;:::i;:::-;28934:12;;;:43;29006:10;;29017:4;;28998:18;;:7;:18;:::i;:::-;:23;;;;:::i;:::-;28988:7;;;:33;29055:15;;29071:4;;29047:23;;:7;:23;:::i;:::-;:28;;;;:::i;:::-;29032:12;;;:43;;;29159:7;;;;29146:12;;;;29121:11;;;;29114:6;;;;29159:7;;29146:12;;29106:14;;:7;:14;:::i;:::-;:26;;;;:::i;:::-;:39;;;;:::i;:::-;:52;;;;:::i;:::-;:60;;;;:::i;:::-;29086:17;;;:80;28617:576;;;;:::o;29201:770::-;29326:15;;;;;;;29473:19;29481:11;29473:7;:19;:::i;:::-;29463:29;;29509:7;29505:73;;-1:-1:-1;29538:7:0;;-1:-1:-1;29556:1:0;;-1:-1:-1;29556:1:0;;-1:-1:-1;29556:1:0;;-1:-1:-1;29556:1:0;;-1:-1:-1;29556:1:0;29531:35;;29505:73;29604:11;29597:1;:6;;;:18;;;;:::i;:::-;29590:25;;29650:11;29638:1;:11;;;:23;;;;:::i;:::-;29626:35;;29698:11;29685:1;:12;;;:24;;;;:::i;:::-;29672:37;;29746:11;29733:1;:12;;;:24;;;;:::i;:::-;29720:37;;29784:11;29776:1;:7;;;:19;;;;:::i;:::-;29768:27;-1:-1:-1;29768:27:0;29859:10;29848;29838:9;29825:12;29833:4;29825:7;:12;:::i;:::-;:22;;;;:::i;:::-;:33;;;;:::i;:::-;:44;;;;:::i;:::-;:50;;;;:::i;:::-;29806:69;;29201:770;;;;;;;;;;;;;:::o;35216:562::-;35366:16;;;35380:1;35366:16;;;;;;;;35342:21;;35366:16;;;;;;;;;;-1:-1:-1;35366:16:0;35342:40;;35411:4;35393;35398:1;35393:7;;;;;;;;:::i;:::-;;;;;;:23;-1:-1:-1;;;;;35393:23:0;;;-1:-1:-1;;;;;35393:23:0;;;;;35437:6;;;;;;;;;-1:-1:-1;;;;;35437:6:0;-1:-1:-1;;;;;35437:11:0;;:13;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;35427:4;35432:1;35427:7;;;;;;;;:::i;:::-;-1:-1:-1;;;;;35427:23:0;;;:7;;;;;;;;;:23;35495:6;;35463:53;;35480:4;;35495:6;;;;35504:11;35463:8;:53::i;:::-;35555:6;;:215;;;;;:6;;;;-1:-1:-1;;;;;35555:6:0;;:57;;:215;;35627:11;;35653:1;;35697:4;;35724;;35744:15;;35555:215;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;35271:507;35216:562;:::o;34709:499::-;34889:6;;34857:53;;34874:4;;34889:6;;;-1:-1:-1;;;;;34889:6:0;34898:11;34857:8;:53::i;:::-;34953:6;;35148:11;;34953:247;;;;;35016:4;34953:247;;;21721:34:1;21771:18;;;21764:34;;;35062:1:0;21814:18:1;;;21807:34;;;21857:18;;;21850:34;-1:-1:-1;;;;;35148:11:0;;;21900:19:1;;;21893:44;35174:15:0;21953:19:1;;;21946:35;34953:6:0;;;;;;:22;;34983:9;;21632:19:1;;34953:247:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;;;34709:499;;:::o;27078:123::-;27156:4;27146:7;;:14;;;;;;;:::i;:::-;;;;-1:-1:-1;;27171:11:0;:22;;27189:4;;27171:11;:15;;:22;;27189:4;;27171:22;:::i;:::-;;;;-1:-1:-1;;;;27078:123:0:o;27209:247::-;27316:10;27292:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;27360:4:0;27340:26;;;;:11;:26;;;;;;;;27337:65;;;27384:4;27368:22;;;;:7;:22;;;;;:34;;27392:10;;27368:22;:34;;27392:10;;27368:34;:::i;:::-;;;;-1:-1:-1;;27337:65:0;27429:4;27413:22;;;;:7;:22;;;;;:35;;27438:10;;27413:22;:35;;27438:10;;27413:35;:::i;27464:246::-;27567:9;27544:11;:20;;;:32;;;;;;;:::i;:::-;;;;-1:-1:-1;;27602:15:0;;-1:-1:-1;;;;;27602:15:0;27590:28;;;;:11;:28;;;;;;;;27587:68;;;27628:15;;-1:-1:-1;;;;;27628:15:0;27620:24;;;;:7;:24;;;;;:35;;27646:9;;27620:24;:35;;27646:9;;27620:35;:::i;:::-;;;;-1:-1:-1;;27587:68:0;27674:15;;-1:-1:-1;;;;;27674:15:0;27666:24;;;;:7;:24;;;;;:36;;27693:9;;27666:24;:36;;27693:9;;27666:36;:::i;27722:255::-;27828:10;27804:11;:21;;;:34;;;;;;;:::i;:::-;;;;-1:-1:-1;;27864:16:0;;-1:-1:-1;;;;;27864:16:0;27852:29;;;;:11;:29;;;;;;;;27849:71;;;27891:16;;-1:-1:-1;;;;;27891:16:0;27883:25;;;;:7;:25;;;;;:37;;27910:10;;27883:25;:37;;27910:10;;27883:37;:::i;:::-;;;;-1:-1:-1;;27849:71:0;27939:16;;-1:-1:-1;;;;;27939:16:0;27931:25;;;;:7;:25;;;;;:38;;27959:10;;27931:25;:38;;27959:10;;27931:38;:::i;27985:209::-;28071:5;28052:11;:16;;;:24;;;;;;;:::i;:::-;;;;-1:-1:-1;;28102:16:0;;-1:-1:-1;;;;;28102:16:0;28090:29;;;;:11;:29;;;;;;;;28087:60;;;28128:11;;-1:-1:-1;;;;;28128:11:0;28120:20;;;;:7;:20;;;;;:27;;28142:5;;28120:20;:27;;28142:5;;28120:27;:::i;:::-;;;;-1:-1:-1;;28087:60:0;28166:11;;-1:-1:-1;;;;;28166:11:0;28158:20;;;;:7;:20;;;;;:28;;28181:5;;28158:20;:28;;28181:5;;28158:28;:::i;14:597:1:-;126:4;155:2;184;173:9;166:21;216:6;210:13;259:6;254:2;243:9;239:18;232:34;284:1;294:140;308:6;305:1;302:13;294:140;;;403:14;;;399:23;;393:30;369:17;;;388:2;365:26;358:66;323:10;;294:140;;;452:6;449:1;446:13;443:91;;;522:1;517:2;508:6;497:9;493:22;489:31;482:42;443:91;-1:-1:-1;595:2:1;574:15;-1:-1:-1;;570:29:1;555:45;;;;602:2;551:54;;14:597;-1:-1:-1;;;14:597:1:o;616:154::-;-1:-1:-1;;;;;695:5:1;691:54;684:5;681:65;671:93;;760:1;757;750:12;775:315;843:6;851;904:2;892:9;883:7;879:23;875:32;872:52;;;920:1;917;910:12;872:52;959:9;946:23;978:31;1003:5;978:31;:::i;:::-;1028:5;1080:2;1065:18;;;;1052:32;;-1:-1:-1;;;775:315:1:o;1287:456::-;1364:6;1372;1380;1433:2;1421:9;1412:7;1408:23;1404:32;1401:52;;;1449:1;1446;1439:12;1401:52;1488:9;1475:23;1507:31;1532:5;1507:31;:::i;:::-;1557:5;-1:-1:-1;1614:2:1;1599:18;;1586:32;1627:33;1586:32;1627:33;:::i;:::-;1287:456;;1679:7;;-1:-1:-1;;;1733:2:1;1718:18;;;;1705:32;;1287:456::o;1930:247::-;1989:6;2042:2;2030:9;2021:7;2017:23;2013:32;2010:52;;;2058:1;2055;2048:12;2010:52;2097:9;2084:23;2116:31;2141:5;2116:31;:::i;2182:180::-;2241:6;2294:2;2282:9;2273:7;2269:23;2265:32;2262:52;;;2310:1;2307;2300:12;2262:52;-1:-1:-1;2333:23:1;;2182:180;-1:-1:-1;2182:180:1:o;2556:388::-;2624:6;2632;2685:2;2673:9;2664:7;2660:23;2656:32;2653:52;;;2701:1;2698;2691:12;2653:52;2740:9;2727:23;2759:31;2784:5;2759:31;:::i;:::-;2809:5;-1:-1:-1;2866:2:1;2851:18;;2838:32;2879:33;2838:32;2879:33;:::i;:::-;2931:7;2921:17;;;2556:388;;;;;:::o;3180:118::-;3266:5;3259:13;3252:21;3245:5;3242:32;3232:60;;3288:1;3285;3278:12;3303:309;3368:6;3376;3429:2;3417:9;3408:7;3404:23;3400:32;3397:52;;;3445:1;3442;3435:12;3397:52;3481:9;3468:23;3458:33;;3541:2;3530:9;3526:18;3513:32;3554:28;3576:5;3554:28;:::i;3617:454::-;3712:6;3720;3728;3736;3744;3797:3;3785:9;3776:7;3772:23;3768:33;3765:53;;;3814:1;3811;3804:12;3765:53;-1:-1:-1;;3837:23:1;;;3907:2;3892:18;;3879:32;;-1:-1:-1;3958:2:1;3943:18;;3930:32;;4009:2;3994:18;;3981:32;;-1:-1:-1;4060:3:1;4045:19;4032:33;;-1:-1:-1;3617:454:1;-1:-1:-1;3617:454:1:o;4076:184::-;-1:-1:-1;;;4125:1:1;4118:88;4225:4;4222:1;4215:15;4249:4;4246:1;4239:15;4265:275;4336:2;4330:9;4401:2;4382:13;;-1:-1:-1;;4378:27:1;4366:40;;4436:18;4421:34;;4457:22;;;4418:62;4415:88;;;4483:18;;:::i;:::-;4519:2;4512:22;4265:275;;-1:-1:-1;4265:275:1:o;4545:183::-;4605:4;4638:18;4630:6;4627:30;4624:56;;;4660:18;;:::i;:::-;-1:-1:-1;4705:1:1;4701:14;4717:4;4697:25;;4545:183::o;4733:737::-;4787:5;4840:3;4833:4;4825:6;4821:17;4817:27;4807:55;;4858:1;4855;4848:12;4807:55;4894:6;4881:20;4920:4;4944:60;4960:43;5000:2;4960:43;:::i;:::-;4944:60;:::i;:::-;5038:15;;;5124:1;5120:10;;;;5108:23;;5104:32;;;5069:12;;;;5148:15;;;5145:35;;;5176:1;5173;5166:12;5145:35;5212:2;5204:6;5200:15;5224:217;5240:6;5235:3;5232:15;5224:217;;;5320:3;5307:17;5337:31;5362:5;5337:31;:::i;:::-;5381:18;;5419:12;;;;5257;;5224:217;;;-1:-1:-1;5459:5:1;4733:737;-1:-1:-1;;;;;;4733:737:1:o;5475:1138::-;5593:6;5601;5654:2;5642:9;5633:7;5629:23;5625:32;5622:52;;;5670:1;5667;5660:12;5622:52;5710:9;5697:23;5739:18;5780:2;5772:6;5769:14;5766:34;;;5796:1;5793;5786:12;5766:34;5819:61;5872:7;5863:6;5852:9;5848:22;5819:61;:::i;:::-;5809:71;;5899:2;5889:12;;5954:2;5943:9;5939:18;5926:32;5983:2;5973:8;5970:16;5967:36;;;5999:1;5996;5989:12;5967:36;6022:24;;;-1:-1:-1;6077:4:1;6069:13;;6065:27;-1:-1:-1;6055:55:1;;6106:1;6103;6096:12;6055:55;6142:2;6129:16;6165:60;6181:43;6221:2;6181:43;:::i;6165:60::-;6259:15;;;6341:1;6337:10;;;;6329:19;;6325:28;;;6290:12;;;;6365:19;;;6362:39;;;6397:1;6394;6387:12;6362:39;6421:11;;;;6441:142;6457:6;6452:3;6449:15;6441:142;;;6523:17;;6511:30;;6474:12;;;;6561;;;;6441:142;;;6602:5;6592:15;;;;;;;5475:1138;;;;;:::o;7086:309::-;7151:6;7159;7212:2;7200:9;7191:7;7187:23;7183:32;7180:52;;;7228:1;7225;7218:12;7180:52;7267:9;7254:23;7286:28;7308:5;7286:28;:::i;7400:241::-;7456:6;7509:2;7497:9;7488:7;7484:23;7480:32;7477:52;;;7525:1;7522;7515:12;7477:52;7564:9;7551:23;7583:28;7605:5;7583:28;:::i;7646:477::-;7736:6;7744;7797:2;7785:9;7776:7;7772:23;7768:32;7765:52;;;7813:1;7810;7803:12;7765:52;7853:9;7840:23;7886:18;7878:6;7875:30;7872:50;;;7918:1;7915;7908:12;7872:50;7941:61;7994:7;7985:6;7974:9;7970:22;7941:61;:::i;:::-;7931:71;;;8052:2;8041:9;8037:18;8024:32;8065:28;8087:5;8065:28;:::i;8128:382::-;8193:6;8201;8254:2;8242:9;8233:7;8229:23;8225:32;8222:52;;;8270:1;8267;8260:12;8222:52;8309:9;8296:23;8328:31;8353:5;8328:31;:::i;:::-;8378:5;-1:-1:-1;8435:2:1;8420:18;;8407:32;8448:30;8407:32;8448:30;:::i;9424:245::-;9491:6;9544:2;9532:9;9523:7;9519:23;9515:32;9512:52;;;9560:1;9557;9550:12;9512:52;9592:9;9586:16;9611:28;9633:5;9611:28;:::i;10083:184::-;-1:-1:-1;;;10132:1:1;10125:88;10232:4;10229:1;10222:15;10256:4;10253:1;10246:15;10272:125;10312:4;10340:1;10337;10334:8;10331:34;;;10345:18;;:::i;:::-;-1:-1:-1;10382:9:1;;10272:125::o;11160:274::-;11200:1;11226;11216:189;;-1:-1:-1;;;11258:1:1;11251:88;11362:4;11359:1;11352:15;11390:4;11387:1;11380:15;11216:189;-1:-1:-1;11419:9:1;;11160:274::o;11439:422::-;11528:1;11571:5;11528:1;11585:270;11606:7;11596:8;11593:21;11585:270;;;11665:4;11661:1;11657:6;11653:17;11647:4;11644:27;11641:53;;;11674:18;;:::i;:::-;11724:7;11714:8;11710:22;11707:55;;;11744:16;;;;11707:55;11823:22;;;;11783:15;;;;11585:270;;;11589:3;11439:422;;;;;:::o;11866:806::-;11915:5;11945:8;11935:80;;-1:-1:-1;11986:1:1;12000:5;;11935:80;12034:4;12024:76;;-1:-1:-1;12071:1:1;12085:5;;12024:76;12116:4;12134:1;12129:59;;;;12202:1;12197:130;;;;12109:218;;12129:59;12159:1;12150:10;;12173:5;;;12197:130;12234:3;12224:8;12221:17;12218:43;;;12241:18;;:::i;:::-;-1:-1:-1;;12297:1:1;12283:16;;12312:5;;12109:218;;12411:2;12401:8;12398:16;12392:3;12386:4;12383:13;12379:36;12373:2;12363:8;12360:16;12355:2;12349:4;12346:12;12342:35;12339:77;12336:159;;;-1:-1:-1;12448:19:1;;;12480:5;;12336:159;12527:34;12552:8;12546:4;12527:34;:::i;:::-;12597:6;12593:1;12589:6;12585:19;12576:7;12573:32;12570:58;;;12608:18;;:::i;:::-;12646:20;;11866:806;-1:-1:-1;;;11866:806:1:o;12677:140::-;12735:5;12764:47;12805:4;12795:8;12791:19;12785:4;12764:47;:::i;12822:168::-;12862:7;12928:1;12924;12920:6;12916:14;12913:1;12910:21;12905:1;12898:9;12891:17;12887:45;12884:71;;;12935:18;;:::i;:::-;-1:-1:-1;12975:9:1;;12822:168::o;13347:184::-;-1:-1:-1;;;13396:1:1;13389:88;13496:4;13493:1;13486:15;13520:4;13517:1;13510:15;13536:184;-1:-1:-1;;;13585:1:1;13578:88;13685:4;13682:1;13675:15;13709:4;13706:1;13699:15;13725:135;13764:3;-1:-1:-1;;13785:17:1;;13782:43;;;13805:18;;:::i;:::-;-1:-1:-1;13852:1:1;13841:13;;13725:135::o;13865:128::-;13905:3;13936:1;13932:6;13929:1;13926:13;13923:39;;;13942:18;;:::i;:::-;-1:-1:-1;13978:9:1;;13865:128::o;20070:251::-;20140:6;20193:2;20181:9;20172:7;20168:23;20164:32;20161:52;;;20209:1;20206;20199:12;20161:52;20241:9;20235:16;20260:31;20285:5;20260:31;:::i;20326:1026::-;20588:4;20636:3;20625:9;20621:19;20667:6;20656:9;20649:25;20693:2;20731:6;20726:2;20715:9;20711:18;20704:34;20774:3;20769:2;20758:9;20754:18;20747:31;20798:6;20833;20827:13;20864:6;20856;20849:22;20902:3;20891:9;20887:19;20880:26;;20941:2;20933:6;20929:15;20915:29;;20962:1;20972:218;20986:6;20983:1;20980:13;20972:218;;;21051:13;;-1:-1:-1;;;;;21047:62:1;21035:75;;21165:15;;;;21130:12;;;;21008:1;21001:9;20972:218;;;-1:-1:-1;;;;;;;21246:55:1;;;;21241:2;21226:18;;21219:83;-1:-1:-1;;;21333:3:1;21318:19;21311:35;21207:3;20326:1026;-1:-1:-1;;;20326:1026:1:o;21992:306::-;22080:6;22088;22096;22149:2;22137:9;22128:7;22124:23;22120:32;22117:52;;;22165:1;22162;22155:12;22117:52;22194:9;22188:16;22178:26;;22244:2;22233:9;22229:18;22223:25;22213:35;;22288:2;22277:9;22273:18;22267:25;22257:35;;21992:306;;;;;:::o

Swarm Source

ipfs://615408ce280580d2fe55cd82ef35b4482f05eed35074b614f858e7f5bd03b7ec
Loading...
Loading
Loading...
Loading
[ Download: CSV Export  ]
[ Download: CSV Export  ]

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