Contract 0xd5f922e23693e552793fe0431f9a95ba67a60a23 1

Txn Hash Method
Block
From
To
Value [Txn Fee]
0x0540cb63d1b8a08b2c7ccd676ab91dbcd6314a8f192bc21da220855c6050863fRenounce Managem...91517962022-01-05 3:45:40447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.000703575 25
0x6b0adef4cb1c0883e751e60de25c4d892bad396dbe52733cf5921f1d7e5d5b8cQueue91517962022-01-05 3:45:40447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007726 25
0x6a3530d9652e11e2c532d79ffc54d63f48fc04f104d8f18d4e87f8b2bfc36e5dQueue91517952022-01-05 3:45:38447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007026 25
0x4b174aa30ed488c3e03e697f7e35bea70c4320cc01949758fd36d8a51fb51ad3Queue91517952022-01-05 3:45:38447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007026 25
0xe47a1aaf30461ff9b930991308d4435bffd9a3d4e6ffea8d5eb209f90dbb6ed9Queue91517952022-01-05 3:45:38447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007726 25
0x704b3fb2010192938a13ea3571ae8b967dd8268f9f3ffdea0bdcf0b21591ba63Queue91517932022-01-05 3:45:34447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007026 25
0x8a943c63c0e8abd7719f041c4b90829533804f0e135bf09fae3d0f089f2178f5Queue91517932022-01-05 3:45:34447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007026 25
0x2e95db2f40208ebb2593702e4943f86fbe2ab44fb44bcd73a3074fe205e13639Queue91517932022-01-05 3:45:34447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007726 25
0xf0f77c547c5582358158f22a9670121fcc9491ea06ea7838c2d57a14a48865f3Queue91517922022-01-05 3:45:31447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007026 25
0xd58be63db8f1e68203c9c157039cc7446f5f4c1c27b40b10ecd191505ba6162aQueue91517922022-01-05 3:45:31447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007726 25
0xc9654d0576c828aea2ab56962b861e279150d376e95c6cb10f1efdb996c139d7Queue91517912022-01-05 3:45:29447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007026 25
0x075945233f1ddab5b5960d34f85c057d481a0848e233df8e2edc9e136a892ac7Queue91517912022-01-05 3:45:29447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007726 25
0xa510945316083e00f992775b62dc41b3ccb537ae32c14a09b7e2e3c7baa1397cQueue91517892022-01-05 3:45:26447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007026 25
0xbea1c060ac26a15a197ab15ee23a818a7f8a743be9822aef1fd58cf1ec7fdbf4Queue91517892022-01-05 3:45:26447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007726 25
0xe8fbcee821cb8cee4a940fc08de0f74c696372acd0b29e1d94ca9eac96003913Queue91517872022-01-05 3:45:22447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007726 25
0x48f833b25b9b07108ebabaf3c48f7b09a2b5d56dfbf03396ea9bc6c3f73e7883Queue91517862022-01-05 3:45:21447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007026 25
0x1872c6fa72e40e8a3f1b470b759c79a28b39e4d785edcbdcc912b1cc76f7b71bQueue91517862022-01-05 3:45:21447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007726 25
0xf22eb8edfbcf033780d898b7da625bcb940a34cbb68f9332563f9d0107e62351Queue91517852022-01-05 3:45:19447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007726 25
0x70f9c37b837ed5f0a442cb3251133875152e8ada06848f5f900be33272d73317Queue91517832022-01-05 3:45:14447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007726 25
0x7e8f9543f7cf22dc19da9119ab7ebfbb28f87298e4d04146b7f6b4325f03c4ecQueue91517792022-01-05 3:45:06447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007726 25
0xc96fa65221cd32aac49b07987993e722bbad6ee931d9fdf078869d7e697e695aQueue91517762022-01-05 3:45:01447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007026 25
0xad28b08c6cb83ad7125bf20c439a89c5699e750885ee630fbb9e3f063c9bc77bQueue91517762022-01-05 3:45:01447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007726 25
0xc76c5a2fe5e8b3b729036a267640adf0c952ace73ab765c27b4b4bcbdf0620e5Queue91517742022-01-05 3:44:57447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007726 25
0xdc8e572f9b3b339b691998800f5605d18d6d2983105c8086a1461f0a66f07751Queue91517722022-01-05 3:44:50447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007726 25
0xbf0ddc003215f30bf5fc3e7498044da4d1e308587d5ac1a69959aa522f0c84b8Queue91517702022-01-05 3:44:47447 days 7 hrs ago0xb9a28b6749eeb871ff4984943e7b7010736dc44a IN  0xd5f922e23693e552793fe0431f9a95ba67a60a230 AVAX0.0007726 25
[ Download CSV Export 
Parent Txn Hash Block From To Value
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
TimeTreasury

Compiler Version
v0.7.5+commit.eb77ed08

Optimization Enabled:
Yes with 1000 runs

Other Settings:
default evmVersion, GNU AGPLv3 license

Contract Source Code (Solidity)

/**
 *Submitted for verification at snowtrace.io on 2021-11-25
*/

// SPDX-License-Identifier: AGPL-3.0-or-later
pragma solidity 0.7.5;

library SafeMath {

    function add(uint256 a, uint256 b) internal pure returns (uint256) {
        uint256 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function add32(uint32 a, uint32 b) internal pure returns (uint32) {
        uint32 c = a + b;
        require(c >= a, "SafeMath: addition overflow");

        return c;
    }

    function sub(uint256 a, uint256 b) internal pure returns (uint256) {
        return sub(a, b, "SafeMath: subtraction overflow");
    }

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }

        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

    function mul32(uint32 a, uint32 b) internal pure returns (uint32) {
        if (a == 0) {
            return 0;
        }

        uint32 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");

        return c;
    }

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

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

library Address {

  function isContract(address account) internal view returns (bool) {
        // This method relies in extcodesize, which returns 0 for contracts in
        // construction, since the code is only stored at the end of the
        // constructor execution.

        uint256 size;
        // solhint-disable-next-line no-inline-assembly
        assembly { size := extcodesize(account) }
        return size > 0;
    }

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

    function _functionCallWithValue(
        address target, 
        bytes memory data, 
        uint256 weiValue, 
        string memory errorMessage
    ) private returns (bytes memory) {
        require(isContract(target), "Address: call to non-contract");

        // solhint-disable-next-line avoid-low-level-calls
        (bool success, bytes memory returndata) = target.call{ value: weiValue }(data);
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }

    function _verifyCallResult(
        bool success, 
        bytes memory returndata, 
        string memory errorMessage
    ) private pure returns(bytes memory) {
        if (success) {
            return returndata;
        } else {
            if (returndata.length > 0) {
                // solhint-disable-next-line no-inline-assembly
                assembly {
                    let returndata_size := mload(returndata)
                    revert(add(32, returndata), returndata_size)
                }
            } else {
                revert(errorMessage);
            }
        }
    }
}

interface IOwnable {
  function manager() external view returns (address);

  function renounceManagement() external;
  
  function pushManagement( address newOwner_ ) external;
  
  function pullManagement() external;
}

contract Ownable is IOwnable {

    address internal _owner;
    address internal _newOwner;

    event OwnershipPushed(address indexed previousOwner, address indexed newOwner);
    event OwnershipPulled(address indexed previousOwner, address indexed newOwner);

    constructor () {
        _owner = msg.sender;
        emit OwnershipPushed( address(0), _owner );
    }

    function manager() public view override returns (address) {
        return _owner;
    }

    modifier onlyManager() {
        require( _owner == msg.sender, "Ownable: caller is not the owner" );
        _;
    }

    function renounceManagement() public virtual override onlyManager() {
        emit OwnershipPushed( _owner, address(0) );
        _owner = address(0);
    }

    function pushManagement( address newOwner_ ) public virtual override onlyManager() {
        require( newOwner_ != address(0), "Ownable: new owner is the zero address");
        emit OwnershipPushed( _owner, newOwner_ );
        _newOwner = newOwner_;
    }
    
    function pullManagement() public virtual override {
        require( msg.sender == _newOwner, "Ownable: must be new owner to pull");
        emit OwnershipPulled( _owner, _newOwner );
        _owner = _newOwner;
    }
}

interface IERC20 {
    function decimals() external view returns (uint8);

    function balanceOf(address account) external view returns (uint256);

    function transfer(address recipient, uint256 amount) external returns (bool);

    function approve(address spender, uint256 amount) external returns (bool);

    function totalSupply() external view returns (uint256);

    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);

    event Transfer(address indexed from, address indexed to, uint256 value);

    event Approval(address indexed owner, address indexed spender, uint256 value);
}

library SafeERC20 {
    using SafeMath for uint256;
    using Address for address;

    function safeTransfer(IERC20 token, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transfer.selector, to, value));
    }

    function safeTransferFrom(IERC20 token, address from, address to, uint256 value) internal {
        _callOptionalReturn(token, abi.encodeWithSelector(token.transferFrom.selector, from, to, value));
    }

    function _callOptionalReturn(IERC20 token, bytes memory data) private {
        bytes memory returndata = address(token).functionCall(data, "SafeERC20: low-level call failed");
        if (returndata.length > 0) { // Return data is optional
            // solhint-disable-next-line max-line-length
            require(abi.decode(returndata, (bool)), "SafeERC20: ERC20 operation did not succeed");
        }
    }
}

interface IERC20Mintable {
  function mint( uint256 amount_ ) external;

  function mint( address account_, uint256 ammount_ ) external;
}

interface IOHMERC20 {
    function burnFrom(address account_, uint256 amount_) external;
}

interface IBondCalculator {
  function valuation( address pair_, uint amount_ ) external view returns ( uint _value );
}

contract TimeTreasury is Ownable {

    using SafeMath for uint;
    using SafeMath for uint32;
    using SafeERC20 for IERC20;

    event Deposit( address indexed token, uint amount, uint value );
    event Withdrawal( address indexed token, uint amount, uint value );
    event CreateDebt( address indexed debtor, address indexed token, uint amount, uint value );
    event RepayDebt( address indexed debtor, address indexed token, uint amount, uint value );
    event ReservesManaged( address indexed token, uint amount );
    event ReservesUpdated( uint indexed totalReserves );
    event ReservesAudited( uint indexed totalReserves );
    event RewardsMinted( address indexed caller, address indexed recipient, uint amount );
    event ChangeQueued( MANAGING indexed managing, address queued );
    event ChangeActivated( MANAGING indexed managing, address activated, bool result );

    enum MANAGING { 
        RESERVEDEPOSITOR, 
        RESERVESPENDER, 
        RESERVETOKEN, 
        RESERVEMANAGER, 
        LIQUIDITYDEPOSITOR, 
        LIQUIDITYTOKEN, 
        LIQUIDITYMANAGER, 
        DEBTOR, 
        REWARDMANAGER, 
        SOHM 
    }

    address public immutable Time;
    uint32 public immutable secondsNeededForQueue;

    address[] public reserveTokens; // Push only, beware false-positives.
    mapping( address => bool ) public isReserveToken;
    mapping( address => uint32 ) public reserveTokenQueue; // Delays changes to mapping.

    address[] public reserveDepositors; // Push only, beware false-positives. Only for viewing.
    mapping( address => bool ) public isReserveDepositor;
    mapping( address => uint32 ) public reserveDepositorQueue; // Delays changes to mapping.

    address[] public reserveSpenders; // Push only, beware false-positives. Only for viewing.
    mapping( address => bool ) public isReserveSpender;
    mapping( address => uint32 ) public reserveSpenderQueue; // Delays changes to mapping.

    address[] public liquidityTokens; // Push only, beware false-positives.
    mapping( address => bool ) public isLiquidityToken;
    mapping( address => uint32 ) public LiquidityTokenQueue; // Delays changes to mapping.

    address[] public liquidityDepositors; // Push only, beware false-positives. Only for viewing.
    mapping( address => bool ) public isLiquidityDepositor;
    mapping( address => uint32 ) public LiquidityDepositorQueue; // Delays changes to mapping.

    mapping( address => address ) public bondCalculator; // bond calculator for liquidity token

    address[] public reserveManagers; // Push only, beware false-positives. Only for viewing.
    mapping( address => bool ) public isReserveManager;
    mapping( address => uint32 ) public ReserveManagerQueue; // Delays changes to mapping.

    address[] public liquidityManagers; // Push only, beware false-positives. Only for viewing.
    mapping( address => bool ) public isLiquidityManager;
    mapping( address => uint32 ) public LiquidityManagerQueue; // Delays changes to mapping.

    address[] public debtors; // Push only, beware false-positives. Only for viewing.
    mapping( address => bool ) public isDebtor;
    mapping( address => uint32 ) public debtorQueue; // Delays changes to mapping.
    mapping( address => uint ) public debtorBalance;

    address[] public rewardManagers; // Push only, beware false-positives. Only for viewing.
    mapping( address => bool ) public isRewardManager;
    mapping( address => uint32 ) public rewardManagerQueue; // Delays changes to mapping.

    address public MEMOries;
    uint public sOHMQueue; // Delays change to sOHM address
    
    uint public totalReserves; // Risk-free value of all assets
    uint public totalDebt;

    constructor (
        address _Time,
        address _MIM,
        uint32 _secondsNeededForQueue
    ) {
        require( _Time != address(0) );
        Time = _Time;

        isReserveToken[ _MIM ] = true;
        reserveTokens.push( _MIM );

    //    isLiquidityToken[ _OHMDAI ] = true;
    //    liquidityTokens.push( _OHMDAI );

        secondsNeededForQueue = _secondsNeededForQueue;
    }

    /**
        @notice allow approved address to deposit an asset for OHM
        @param _amount uint
        @param _token address
        @param _profit uint
        @return send_ uint
     */
    function deposit( uint _amount, address _token, uint _profit ) external returns ( uint send_ ) {
        require( isReserveToken[ _token ] || isLiquidityToken[ _token ], "Not accepted" );
        IERC20( _token ).safeTransferFrom( msg.sender, address(this), _amount );

        if ( isReserveToken[ _token ] ) {
            require( isReserveDepositor[ msg.sender ], "Not approved" );
        } else {
            require( isLiquidityDepositor[ msg.sender ], "Not approved" );
        }

        uint value = valueOf(_token, _amount);
        // mint OHM needed and store amount of rewards for distribution
        send_ = value.sub( _profit );
        IERC20Mintable( Time ).mint( msg.sender, send_ );

        totalReserves = totalReserves.add( value );
        emit ReservesUpdated( totalReserves );

        emit Deposit( _token, _amount, value );
    }

    /**
        @notice allow approved address to burn OHM for reserves
        @param _amount uint
        @param _token address
     */
    function withdraw( uint _amount, address _token ) external {
        require( isReserveToken[ _token ], "Not accepted" ); // Only reserves can be used for redemptions
        require( isReserveSpender[ msg.sender ] == true, "Not approved" );

        uint value = valueOf( _token, _amount );
        IOHMERC20( Time ).burnFrom( msg.sender, value );

        totalReserves = totalReserves.sub( value );
        emit ReservesUpdated( totalReserves );

        IERC20( _token ).safeTransfer( msg.sender, _amount );

        emit Withdrawal( _token, _amount, value );
    }

    /**
        @notice allow approved address to borrow reserves
        @param _amount uint
        @param _token address
     */
    function incurDebt( uint _amount, address _token ) external {
        require( isDebtor[ msg.sender ], "Not approved" );
        require( isReserveToken[ _token ], "Not accepted" );

        uint value = valueOf( _token, _amount );

        uint maximumDebt = IERC20( MEMOries ).balanceOf( msg.sender ); // Can only borrow against sOHM held
        uint availableDebt = maximumDebt.sub( debtorBalance[ msg.sender ] );
        require( value <= availableDebt, "Exceeds debt limit" );

        debtorBalance[ msg.sender ] = debtorBalance[ msg.sender ].add( value );
        totalDebt = totalDebt.add( value );

        totalReserves = totalReserves.sub( value );
        emit ReservesUpdated( totalReserves );

        IERC20( _token ).transfer( msg.sender, _amount );
        
        emit CreateDebt( msg.sender, _token, _amount, value );
    }

    /**
        @notice allow approved address to repay borrowed reserves with reserves
        @param _amount uint
        @param _token address
     */
    function repayDebtWithReserve( uint _amount, address _token ) external {
        require( isDebtor[ msg.sender ], "Not approved" );
        require( isReserveToken[ _token ], "Not accepted" );

        IERC20( _token ).safeTransferFrom( msg.sender, address(this), _amount );

        uint value = valueOf( _token, _amount );
        debtorBalance[ msg.sender ] = debtorBalance[ msg.sender ].sub( value );
        totalDebt = totalDebt.sub( value );

        totalReserves = totalReserves.add( value );
        emit ReservesUpdated( totalReserves );

        emit RepayDebt( msg.sender, _token, _amount, value );
    }

    /**
        @notice allow approved address to repay borrowed reserves with OHM
        @param _amount uint
     */
    function repayDebtWithOHM( uint _amount ) external {
        require( isDebtor[ msg.sender ], "Not approved" );

        IOHMERC20( Time ).burnFrom( msg.sender, _amount );

        debtorBalance[ msg.sender ] = debtorBalance[ msg.sender ].sub( _amount );
        totalDebt = totalDebt.sub( _amount );

        emit RepayDebt( msg.sender, Time, _amount, _amount );
    }

    /**
        @notice allow approved address to withdraw assets
        @param _token address
        @param _amount uint
     */
    function manage( address _token, uint _amount ) external {
        if( isLiquidityToken[ _token ] ) {
            require( isLiquidityManager[ msg.sender ], "Not approved" );
        } else {
            require( isReserveManager[ msg.sender ], "Not approved" );
        }

        uint value = valueOf(_token, _amount);
        require( value <= excessReserves(), "Insufficient reserves" );

        totalReserves = totalReserves.sub( value );
        emit ReservesUpdated( totalReserves );

        IERC20( _token ).safeTransfer( msg.sender, _amount );

        emit ReservesManaged( _token, _amount );
    }

    /**
        @notice send epoch reward to staking contract
     */
    function mintRewards( address _recipient, uint _amount ) external {
        require( isRewardManager[ msg.sender ], "Not approved" );
        require( _amount <= excessReserves(), "Insufficient reserves" );

        IERC20Mintable( Time ).mint( _recipient, _amount );

        emit RewardsMinted( msg.sender, _recipient, _amount );
    } 

    /**
        @notice returns excess reserves not backing tokens
        @return uint
     */
    function excessReserves() public view returns ( uint ) {
        return totalReserves.sub( IERC20( Time ).totalSupply().sub( totalDebt ) );
    }

    /**
        @notice takes inventory of all tracked assets
        @notice always consolidate to recognized reserves before audit
     */
    function auditReserves() external onlyManager() {
        uint reserves;
        for( uint i = 0; i < reserveTokens.length; i++ ) {
            reserves = reserves.add ( 
                valueOf( reserveTokens[ i ], IERC20( reserveTokens[ i ] ).balanceOf( address(this) ) )
            );
        }
        for( uint i = 0; i < liquidityTokens.length; i++ ) {
            reserves = reserves.add (
                valueOf( liquidityTokens[ i ], IERC20( liquidityTokens[ i ] ).balanceOf( address(this) ) )
            );
        }
        totalReserves = reserves;
        emit ReservesUpdated( reserves );
        emit ReservesAudited( reserves );
    }

    /**
        @notice returns OHM valuation of asset
        @param _token address
        @param _amount uint
        @return value_ uint
     */
    function valueOf( address _token, uint _amount ) public view returns ( uint value_ ) {
        if ( isReserveToken[ _token ] ) {
            // convert amount to match OHM decimals
            value_ = _amount.mul( 10 ** IERC20( Time ).decimals() ).div( 10 ** IERC20( _token ).decimals() );
        } else if ( isLiquidityToken[ _token ] ) {
            value_ = IBondCalculator( bondCalculator[ _token ] ).valuation( _token, _amount );
        }
    }

    /**
        @notice queue address to change boolean in mapping
        @param _managing MANAGING
        @param _address address
        @return bool
     */
    function queue( MANAGING _managing, address _address ) external onlyManager() returns ( bool ) {
        require( _address != address(0) );
        if ( _managing == MANAGING.RESERVEDEPOSITOR ) { // 0
            reserveDepositorQueue[ _address ] = uint32(block.timestamp).add32( secondsNeededForQueue );
        } else if ( _managing == MANAGING.RESERVESPENDER ) { // 1
            reserveSpenderQueue[ _address ] = uint32(block.timestamp).add32( secondsNeededForQueue );
        } else if ( _managing == MANAGING.RESERVETOKEN ) { // 2
            reserveTokenQueue[ _address ] = uint32(block.timestamp).add32( secondsNeededForQueue );
        } else if ( _managing == MANAGING.RESERVEMANAGER ) { // 3
            ReserveManagerQueue[ _address ] = uint32(block.timestamp).add32( secondsNeededForQueue.mul32( 2 ) );
        } else if ( _managing == MANAGING.LIQUIDITYDEPOSITOR ) { // 4
            LiquidityDepositorQueue[ _address ] = uint32(block.timestamp).add32( secondsNeededForQueue );
        } else if ( _managing == MANAGING.LIQUIDITYTOKEN ) { // 5
            LiquidityTokenQueue[ _address ] = uint32(block.timestamp).add32( secondsNeededForQueue );
        } else if ( _managing == MANAGING.LIQUIDITYMANAGER ) { // 6
            LiquidityManagerQueue[ _address ] = uint32(block.timestamp).add32( secondsNeededForQueue.mul32( 2 ) );
        } else if ( _managing == MANAGING.DEBTOR ) { // 7
            debtorQueue[ _address ] = uint32(block.timestamp).add32( secondsNeededForQueue );
        } else if ( _managing == MANAGING.REWARDMANAGER ) { // 8
            rewardManagerQueue[ _address ] = uint32(block.timestamp).add32( secondsNeededForQueue );
        } else if ( _managing == MANAGING.SOHM ) { // 9
            sOHMQueue = uint32(block.timestamp).add32( secondsNeededForQueue );
        } else return false;

        emit ChangeQueued( _managing, _address );
        return true;
    }

    /**
        @notice verify queue then set boolean in mapping
        @param _managing MANAGING
        @param _address address
        @param _calculator address
        @return bool
     */
    function toggle(
        MANAGING _managing, 
        address _address, 
        address _calculator 
    ) external onlyManager() returns ( bool ) {
        require( _address != address(0) );
        bool result;
        if ( _managing == MANAGING.RESERVEDEPOSITOR ) { // 0
            if ( requirements( reserveDepositorQueue, isReserveDepositor, _address ) ) {
                reserveDepositorQueue[ _address ] = 0;
                if( !listContains( reserveDepositors, _address ) ) {
                    reserveDepositors.push( _address );
                }
            }
            result = !isReserveDepositor[ _address ];
            isReserveDepositor[ _address ] = result;
            
        } else if ( _managing == MANAGING.RESERVESPENDER ) { // 1
            if ( requirements( reserveSpenderQueue, isReserveSpender, _address ) ) {
                reserveSpenderQueue[ _address ] = 0;
                if( !listContains( reserveSpenders, _address ) ) {
                    reserveSpenders.push( _address );
                }
            }
            result = !isReserveSpender[ _address ];
            isReserveSpender[ _address ] = result;

        } else if ( _managing == MANAGING.RESERVETOKEN ) { // 2
            if ( requirements( reserveTokenQueue, isReserveToken, _address ) ) {
                reserveTokenQueue[ _address ] = 0;
                if( !listContains( reserveTokens, _address ) ) {
                    reserveTokens.push( _address );
                }
            }
            result = !isReserveToken[ _address ];
            isReserveToken[ _address ] = result;

        } else if ( _managing == MANAGING.RESERVEMANAGER ) { // 3
            if ( requirements( ReserveManagerQueue, isReserveManager, _address ) ) {
                reserveManagers.push( _address );
                ReserveManagerQueue[ _address ] = 0;
                if( !listContains( reserveManagers, _address ) ) {
                    reserveManagers.push( _address );
                }
            }
            result = !isReserveManager[ _address ];
            isReserveManager[ _address ] = result;

        } else if ( _managing == MANAGING.LIQUIDITYDEPOSITOR ) { // 4
            if ( requirements( LiquidityDepositorQueue, isLiquidityDepositor, _address ) ) {
                liquidityDepositors.push( _address );
                LiquidityDepositorQueue[ _address ] = 0;
                if( !listContains( liquidityDepositors, _address ) ) {
                    liquidityDepositors.push( _address );
                }
            }
            result = !isLiquidityDepositor[ _address ];
            isLiquidityDepositor[ _address ] = result;

        } else if ( _managing == MANAGING.LIQUIDITYTOKEN ) { // 5
            if ( requirements( LiquidityTokenQueue, isLiquidityToken, _address ) ) {
                LiquidityTokenQueue[ _address ] = 0;
                if( !listContains( liquidityTokens, _address ) ) {
                    liquidityTokens.push( _address );
                }
            }
            result = !isLiquidityToken[ _address ];
            isLiquidityToken[ _address ] = result;
            bondCalculator[ _address ] = _calculator;

        } else if ( _managing == MANAGING.LIQUIDITYMANAGER ) { // 6
            if ( requirements( LiquidityManagerQueue, isLiquidityManager, _address ) ) {
                LiquidityManagerQueue[ _address ] = 0;
                if( !listContains( liquidityManagers, _address ) ) {
                    liquidityManagers.push( _address );
                }
            }
            result = !isLiquidityManager[ _address ];
            isLiquidityManager[ _address ] = result;

        } else if ( _managing == MANAGING.DEBTOR ) { // 7
            if ( requirements( debtorQueue, isDebtor, _address ) ) {
                debtorQueue[ _address ] = 0;
                if( !listContains( debtors, _address ) ) {
                    debtors.push( _address );
                }
            }
            result = !isDebtor[ _address ];
            isDebtor[ _address ] = result;

        } else if ( _managing == MANAGING.REWARDMANAGER ) { // 8
            if ( requirements( rewardManagerQueue, isRewardManager, _address ) ) {
                rewardManagerQueue[ _address ] = 0;
                if( !listContains( rewardManagers, _address ) ) {
                    rewardManagers.push( _address );
                }
            }
            result = !isRewardManager[ _address ];
            isRewardManager[ _address ] = result;

        } else if ( _managing == MANAGING.SOHM ) { // 9
            sOHMQueue = 0;
            MEMOries = _address;
            result = true;

        } else return false;

        emit ChangeActivated( _managing, _address, result );
        return true;
    }

    /**
        @notice checks requirements and returns altered structs
        @param queue_ mapping( address => uint )
        @param status_ mapping( address => bool )
        @param _address address
        @return bool 
     */
    function requirements( 
        mapping( address => uint32 ) storage queue_, 
        mapping( address => bool ) storage status_, 
        address _address 
    ) internal view returns ( bool ) {
        if ( !status_[ _address ] ) {
            require( queue_[ _address ] != 0, "Must queue" );
            require( queue_[ _address ] <= uint32(block.timestamp), "Queue not expired" );
            return true;
        } return false;
    }

    /**
        @notice checks array to ensure against duplicate
        @param _list address[]
        @param _token address
        @return bool
     */
    function listContains( address[] storage _list, address _token ) internal view returns ( bool ) {
        for( uint i = 0; i < _list.length; i++ ) {
            if( _list[ i ] == _token ) {
                return true;
            }
        }
        return false;
    }
}

Contract ABI

[{"inputs":[{"internalType":"address","name":"_Time","type":"address"},{"internalType":"address","name":"_MIM","type":"address"},{"internalType":"uint32","name":"_secondsNeededForQueue","type":"uint32"}],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"enum TimeTreasury.MANAGING","name":"managing","type":"uint8"},{"indexed":false,"internalType":"address","name":"activated","type":"address"},{"indexed":false,"internalType":"bool","name":"result","type":"bool"}],"name":"ChangeActivated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"enum TimeTreasury.MANAGING","name":"managing","type":"uint8"},{"indexed":false,"internalType":"address","name":"queued","type":"address"}],"name":"ChangeQueued","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"debtor","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"CreateDebt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Deposit","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipPulled","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipPushed","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"debtor","type":"address"},{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"RepayDebt","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"totalReserves","type":"uint256"}],"name":"ReservesAudited","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ReservesManaged","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"uint256","name":"totalReserves","type":"uint256"}],"name":"ReservesUpdated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"caller","type":"address"},{"indexed":true,"internalType":"address","name":"recipient","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"RewardsMinted","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Withdrawal","type":"event"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"LiquidityDepositorQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"LiquidityManagerQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"LiquidityTokenQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"MEMOries","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"ReserveManagerQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Time","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"auditReserves","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"bondCalculator","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"debtorBalance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"debtorQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"debtors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_profit","type":"uint256"}],"name":"deposit","outputs":[{"internalType":"uint256","name":"send_","type":"uint256"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"excessReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"}],"name":"incurDebt","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isDebtor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLiquidityDepositor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLiquidityManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isLiquidityToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isReserveDepositor","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isReserveManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isReserveSpender","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isReserveToken","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"isRewardManager","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"liquidityDepositors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"liquidityManagers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"liquidityTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"manage","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"manager","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_recipient","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"mintRewards","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"pullManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner_","type":"address"}],"name":"pushManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"enum TimeTreasury.MANAGING","name":"_managing","type":"uint8"},{"internalType":"address","name":"_address","type":"address"}],"name":"queue","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"renounceManagement","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"repayDebtWithOHM","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"}],"name":"repayDebtWithReserve","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"reserveDepositorQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"reserveDepositors","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"reserveManagers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"reserveSpenderQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"reserveSpenders","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"reserveTokenQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"reserveTokens","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewardManagerQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"","type":"uint256"}],"name":"rewardManagers","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"sOHMQueue","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"secondsNeededForQueue","outputs":[{"internalType":"uint32","name":"","type":"uint32"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"enum TimeTreasury.MANAGING","name":"_managing","type":"uint8"},{"internalType":"address","name":"_address","type":"address"},{"internalType":"address","name":"_calculator","type":"address"}],"name":"toggle","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalDebt","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"totalReserves","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"},{"internalType":"uint256","name":"_amount","type":"uint256"}],"name":"valueOf","outputs":[{"internalType":"uint256","name":"value_","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_amount","type":"uint256"},{"internalType":"address","name":"_token","type":"address"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

60c060405234801561001057600080fd5b5060405162003a7c38038062003a7c8339818101604052606081101561003557600080fd5b5080516020820151604092830151600080546001600160a01b031916331780825594519394929391926001600160a01b0316917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908290a36001600160a01b0383166100a057600080fd5b6001600160601b0319606084901b166080526001600160a01b039182166000818152600360205260408120805460ff1916600190811790915560028054918201815582527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319169092179091556001600160e01b031960e083901b1660a052919092169163ffffffff16906138d390620001a9903980611b9a52806121a0528061221d528061229a528061231652806123a8528061242552806124a1528061252352806125a0528061261d525080610a9e5280610e7e5280610fa8528061105c52806114935280611a8f5280611e0d52806126d652506138d36000f3fe608060405234801561001057600080fd5b50600436106103405760003560e01c8063869871bf116101bd578063cd85641a116100f9578063ee4e19a1116100a2578063fbfd393b1161007c578063fbfd393b14610958578063fc7b9c181461098f578063fd1ec01014610997578063fff9ee87146109b457610340565b8063ee4e19a114610904578063f8e157ea1461092a578063fb9395881461093257610340565b8063df89b344116100d3578063df89b34414610889578063e83afee3146108af578063ebd83cd8146108de57610340565b8063cd85641a1461081a578063d031370b14610840578063d796ffb81461085d57610340565b8063a1210a2d11610166578063b1bd38b011610140578063b1bd38b01461077f578063b5b1d560146107a5578063bc157ac1146107c2578063c24ad43e146107f457610340565b8063a1210a2d1461070d578063a569e57114610733578063ab319c9a1461075957610340565b80638f6a7b57116101975780638f6a7b57146106c25780638f840ddd146106df578063932cc8c3146106e757610340565b8063869871bf1461065957806387d67dff146106765780638f59c7271461069c57610340565b80632b7ce5001161028c5780635a96ac0a116102355780636b5e40a71161020f5780636b5e40a7146105d857806370a0502a146105f5578063788c6c01146106125780637a8960d81461065157610340565b80635a96ac0a1461057e57806368c31dd5146105865780636a20de92146105ac57610340565b8063481c6a7511610266578063481c6a751461054857806349880e52146105505780634e83423c1461055857610340565b80632b7ce500146104fd578063437f79121461050557806346f68ee91461052257610340565b80630f70431f116102ee5780631af4da70116102c85780631af4da70146104a35780631eec5a9a146104c95780632789de37146104f557610340565b80630f70431f14610420578063124154ca1461043d57806312422d231461047757610340565b8063094a86511161031f578063094a8651146103b45780630b0eee30146103ec5780630c3513a81461041857610340565b8062f714ce146103455780630619aff114610373578063089208d8146103ac575b600080fd5b6103716004803603604081101561035b57600080fd5b50803590602001356001600160a01b03166109da565b005b6103906004803603602081101561038957600080fd5b5035610bc3565b604080516001600160a01b039092168252519081900360200190f35b610371610bed565b6103da600480360360208110156103ca57600080fd5b50356001600160a01b0316610c96565b60408051918252519081900360200190f35b6103716004803603604081101561040257600080fd5b506001600160a01b038135169060200135610ca8565b6103da610e71565b6103716004803603602081101561043657600080fd5b5035610f15565b6104636004803603602081101561045357600080fd5b50356001600160a01b03166110ad565b604080519115158252519081900360200190f35b6103716004803603604081101561048d57600080fd5b50803590602001356001600160a01b03166110c2565b610390600480360360208110156104b957600080fd5b50356001600160a01b03166113af565b6103da600480360360408110156104df57600080fd5b506001600160a01b0381351690602001356113ca565b6103da6115f0565b6103716115f6565b6103906004803603602081101561051b57600080fd5b50356117dd565b6103716004803603602081101561053857600080fd5b50356001600160a01b03166117ed565b6103906118ec565b6103906118fb565b6104636004803603602081101561056e57600080fd5b50356001600160a01b031661190a565b61037161191f565b6104636004803603602081101561059c57600080fd5b50356001600160a01b03166119c9565b610371600480360360408110156105c257600080fd5b506001600160a01b0381351690602001356119de565b610390600480360360208110156105ee57600080fd5b5035611b60565b6103906004803603602081101561060b57600080fd5b5035611b70565b6106386004803603602081101561062857600080fd5b50356001600160a01b0316611b80565b6040805163ffffffff9092168252519081900360200190f35b610638611b98565b6103906004803603602081101561066f57600080fd5b5035611bbc565b6104636004803603602081101561068c57600080fd5b50356001600160a01b0316611bcc565b610638600480360360208110156106b257600080fd5b50356001600160a01b0316611be1565b610390600480360360208110156106d857600080fd5b5035611bf9565b6103da611c09565b610638600480360360208110156106fd57600080fd5b50356001600160a01b0316611c0f565b6104636004803603602081101561072357600080fd5b50356001600160a01b0316611c27565b6104636004803603602081101561074957600080fd5b50356001600160a01b0316611c3c565b6106386004803603602081101561076f57600080fd5b50356001600160a01b0316611c51565b6106386004803603602081101561079557600080fd5b50356001600160a01b0316611c69565b610390600480360360208110156107bb57600080fd5b5035611c81565b6103da600480360360608110156107d857600080fd5b508035906001600160a01b036020820135169060400135611c91565b6106386004803603602081101561080a57600080fd5b50356001600160a01b0316611f21565b6106386004803603602081101561083057600080fd5b50356001600160a01b0316611f39565b6103906004803603602081101561085657600080fd5b5035611f51565b6103716004803603604081101561087357600080fd5b50803590602001356001600160a01b0316611f61565b6104636004803603602081101561089f57600080fd5b50356001600160a01b03166120f6565b610463600480360360408110156108c557600080fd5b50803560ff1690602001356001600160a01b031661210b565b610463600480360360208110156108f457600080fd5b50356001600160a01b03166126aa565b6104636004803603602081101561091a57600080fd5b50356001600160a01b03166126bf565b6103906126d4565b6106386004803603602081101561094857600080fd5b50356001600160a01b03166126f8565b6104636004803603606081101561096e57600080fd5b5060ff813516906001600160a01b0360208201358116916040013516612710565b6103da613038565b610390600480360360208110156109ad57600080fd5b503561303e565b610638600480360360208110156109ca57600080fd5b50356001600160a01b031661304e565b6001600160a01b03811660009081526003602052604090205460ff16610a36576040805162461bcd60e51b815260206004820152600c60248201526b139bdd081858d8d95c1d195960a21b604482015290519081900360640190fd5b3360009081526009602052604090205460ff161515600114610a8e576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185c1c1c9bdd995960a21b604482015290519081900360640190fd5b6000610a9a82846113ca565b90507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166379cc679033836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015610b1357600080fd5b505af1158015610b27573d6000803e3d6000fd5b5050602154610b399250905082613066565b60218190556040517f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6690600090a2610b7b6001600160a01b03831633856130a8565b604080518481526020810183905281516001600160a01b038516927fdf273cb619d95419a9cd0ec88123a0538c85064229baa6363788f743fff90deb928290030190a2505050565b60128181548110610bd357600080fd5b6000918252602090912001546001600160a01b0316905081565b6000546001600160a01b03163314610c4c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b600080546040516001600160a01b03909116907fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba908390a3600080546001600160a01b0319169055565b601b6020526000908152604090205481565b6001600160a01b0382166000908152600c602052604090205460ff1615610d21573360009081526016602052604090205460ff16610d1c576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185c1c1c9bdd995960a21b604482015290519081900360640190fd5b610d74565b3360009081526013602052604090205460ff16610d74576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185c1c1c9bdd995960a21b604482015290519081900360640190fd5b6000610d8083836113ca565b9050610d8a610e71565b811115610dde576040805162461bcd60e51b815260206004820152601560248201527f496e73756666696369656e742072657365727665730000000000000000000000604482015290519081900360640190fd5b602154610deb9082613066565b60218190556040517f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6690600090a2610e2d6001600160a01b03841633846130a8565b6040805183815290516001600160a01b038516917f2bb2640731848fe9820ba48dbc978c1fc9bbd5f11b948bfab05b7dee3378fd80919081900360200190a2505050565b6000610f10610f076022547f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166318160ddd6040518163ffffffff1660e01b815260040160206040518083038186803b158015610ed557600080fd5b505afa158015610ee9573d6000803e3d6000fd5b505050506040513d6020811015610eff57600080fd5b505190613066565b60215490613066565b905090565b3360009081526019602052604090205460ff16610f68576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185c1c1c9bdd995960a21b604482015290519081900360640190fd5b604080517f79cc67900000000000000000000000000000000000000000000000000000000081523360048201526024810183905290516001600160a01b037f000000000000000000000000000000000000000000000000000000000000000016916379cc679091604480830192600092919082900301818387803b158015610fef57600080fd5b505af1158015611003573d6000803e3d6000fd5b5050336000908152601b60205260409020546110229250905082613066565b336000908152601b602052604090205560225461103f9082613066565b602255604080518281526020810183905281516001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169233927fc6d98eecfc9c78ab62c89a82950079b54874749f1f6f24090f7acc758bc2f309929081900390910190a350565b60066020526000908152604090205460ff1681565b3360009081526019602052604090205460ff16611115576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185c1c1c9bdd995960a21b604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205460ff16611171576040805162461bcd60e51b815260206004820152600c60248201526b139bdd081858d8d95c1d195960a21b604482015290519081900360640190fd5b600061117d82846113ca565b601f54604080516370a0823160e01b815233600482015290519293506000926001600160a01b03909216916370a0823191602480820192602092909190829003018186803b1580156111ce57600080fd5b505afa1580156111e2573d6000803e3d6000fd5b505050506040513d60208110156111f857600080fd5b5051336000908152601b602052604081205491925090611219908390613066565b905080831115611270576040805162461bcd60e51b815260206004820152601260248201527f457863656564732064656274206c696d69740000000000000000000000000000604482015290519081900360640190fd5b336000908152601b602052604090205461128a9084613114565b336000908152601b60205260409020556022546112a79084613114565b6022556021546112b79084613066565b60218190556040517f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6690600090a26040805163a9059cbb60e01b81523360048201526024810187905290516001600160a01b0386169163a9059cbb9160448083019260209291908290030181600087803b15801561133457600080fd5b505af1158015611348573d6000803e3d6000fd5b505050506040513d602081101561135e57600080fd5b5050604080518681526020810185905281516001600160a01b0387169233927f7e1a939bed137a819b5d2979822c67f877689f7a863d5e4cb57cdca97b2977d6929081900390910190a35050505050565b6011602052600090815260409020546001600160a01b031681565b6001600160a01b03821660009081526003602052604081205460ff161561152057611519836001600160a01b031663313ce5676040518163ffffffff1660e01b815260040160206040518083038186803b15801561142757600080fd5b505afa15801561143b573d6000803e3d6000fd5b505050506040513d602081101561145157600080fd5b5051604080517f313ce567000000000000000000000000000000000000000000000000000000008152905160ff909216600a0a91611513916001600160a01b037f0000000000000000000000000000000000000000000000000000000000000000169163313ce56791600480820192602092909190829003018186803b1580156114da57600080fd5b505afa1580156114ee573d6000803e3d6000fd5b505050506040513d602081101561150457600080fd5b5051859060ff16600a0a61316e565b906131c7565b90506115ea565b6001600160a01b0383166000908152600c602052604090205460ff16156115ea576001600160a01b038084166000818152601160209081526040918290205482517f4249719f00000000000000000000000000000000000000000000000000000000815260048101949094526024840187905291519190931692634249719f9260448082019391829003018186803b1580156115bb57600080fd5b505afa1580156115cf573d6000803e3d6000fd5b505050506040513d60208110156115e557600080fd5b505190505b92915050565b60205481565b6000546001600160a01b03163314611655576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6000805b60025481101561172d5761172361171c6002838154811061167657fe5b600091825260209091200154600280546001600160a01b03909216918590811061169c57fe5b60009182526020918290200154604080516370a0823160e01b815230600482015290516001600160a01b03909216926370a0823192602480840193829003018186803b1580156116eb57600080fd5b505afa1580156116ff573d6000803e3d6000fd5b505050506040513d602081101561171557600080fd5b50516113ca565b8390613114565b9150600101611659565b5060005b600b5481101561177e5761177461171c600b838154811061174e57fe5b600091825260209091200154600b80546001600160a01b03909216918590811061169c57fe5b9150600101611731565b50602181905560405181907f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6690600090a260405181907fec691f09f6924b27932253f85caf99bacc30360cc0e50a1cc4d2acc24601446690600090a250565b60088181548110610bd357600080fd5b6000546001600160a01b0316331461184c576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b0381166118915760405162461bcd60e51b815260040180806020018281038252602681526020018061380b6026913960400191505060405180910390fd5b600080546040516001600160a01b03808516939216917fea8258f2d9ddb679928cf34b78cf645b7feda9acc828e4dd82d014eaae270eba91a3600180546001600160a01b0319166001600160a01b0392909216919091179055565b6000546001600160a01b031690565b601f546001600160a01b031681565b601d6020526000908152604090205460ff1681565b6001546001600160a01b031633146119685760405162461bcd60e51b81526004018080602001828103825260228152602001806138316022913960400191505060405180910390fd5b600154600080546040516001600160a01b0393841693909116917faa151555690c956fc3ea32f106bb9f119b5237a061eaa8557cff3e51e3792c8d91a3600154600080546001600160a01b0319166001600160a01b03909216919091179055565b60036020526000908152604090205460ff1681565b336000908152601d602052604090205460ff16611a31576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185c1c1c9bdd995960a21b604482015290519081900360640190fd5b611a39610e71565b811115611a8d576040805162461bcd60e51b815260206004820152601560248201527f496e73756666696369656e742072657365727665730000000000000000000000604482015290519081900360640190fd5b7f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166340c10f1983836040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611b0457600080fd5b505af1158015611b18573d6000803e3d6000fd5b50506040805184815290516001600160a01b03861693503392507ffa8ccab40e7da8146c2304cd0950334fd30a6ba093abe86261aa13911fed849c9181900360200190a35050565b60058181548110610bd357600080fd5b60158181548110610bd357600080fd5b60046020526000908152604090205463ffffffff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b60188181548110610bd357600080fd5b60096020526000908152604090205460ff1681565b600d6020526000908152604090205463ffffffff1681565b600e8181548110610bd357600080fd5b60215481565b60076020526000908152604090205463ffffffff1681565b600f6020526000908152604090205460ff1681565b600c6020526000908152604090205460ff1681565b60176020526000908152604090205463ffffffff1681565b60146020526000908152604090205463ffffffff1681565b601c8181548110610bd357600080fd5b6001600160a01b03821660009081526003602052604081205460ff1680611cd057506001600160a01b0383166000908152600c602052604090205460ff165b611d10576040805162461bcd60e51b815260206004820152600c60248201526b139bdd081858d8d95c1d195960a21b604482015290519081900360640190fd5b611d256001600160a01b038416333087613209565b6001600160a01b03831660009081526003602052604090205460ff1615611d9e573360009081526006602052604090205460ff16611d99576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185c1c1c9bdd995960a21b604482015290519081900360640190fd5b611df1565b336000908152600f602052604090205460ff16611df1576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185c1c1c9bdd995960a21b604482015290519081900360640190fd5b6000611dfd84866113ca565b9050611e098184613066565b91507f00000000000000000000000000000000000000000000000000000000000000006001600160a01b03166340c10f1933846040518363ffffffff1660e01b815260040180836001600160a01b0316815260200182815260200192505050600060405180830381600087803b158015611e8257600080fd5b505af1158015611e96573d6000803e3d6000fd5b5050602154611ea89250905082613114565b60218190556040517f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6690600090a2604080518681526020810183905281516001600160a01b038716927f90890809c654f11d6e72a28fa60149770a0d11ec6c92319d6ceb2bb0a4ea1a15928290030190a2509392505050565b600a6020526000908152604090205463ffffffff1681565b601a6020526000908152604090205463ffffffff1681565b60028181548110610bd357600080fd5b3360009081526019602052604090205460ff16611fb4576040805162461bcd60e51b815260206004820152600c60248201526b139bdd08185c1c1c9bdd995960a21b604482015290519081900360640190fd5b6001600160a01b03811660009081526003602052604090205460ff16612010576040805162461bcd60e51b815260206004820152600c60248201526b139bdd081858d8d95c1d195960a21b604482015290519081900360640190fd5b6120256001600160a01b038216333085613209565b600061203182846113ca565b336000908152601b602052604090205490915061204e9082613066565b336000908152601b602052604090205560225461206b9082613066565b60225560215461207b9082613114565b60218190556040517f93bb8edd35984706eee1b92541281f7f62d33c01c5b2ec0929a113603bd21d6690600090a2604080518481526020810183905281516001600160a01b0385169233927fc6d98eecfc9c78ab62c89a82950079b54874749f1f6f24090f7acc758bc2f309929081900390910190a3505050565b60166020526000908152604090205460ff1681565b600080546001600160a01b0316331461216b576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03821661217e57600080fd5b600083600981111561218c57fe5b14156121fb576121c663ffffffff428116907f00000000000000000000000000000000000000000000000000000000000000009061329716565b6001600160a01b0383166000908152600760205260409020805463ffffffff191663ffffffff92909216919091179055612659565b600183600981111561220957fe5b14156122785761224363ffffffff428116907f00000000000000000000000000000000000000000000000000000000000000009061329716565b6001600160a01b0383166000908152600a60205260409020805463ffffffff191663ffffffff92909216919091179055612659565b600283600981111561228657fe5b14156122f5576122c063ffffffff428116907f00000000000000000000000000000000000000000000000000000000000000009061329716565b6001600160a01b0383166000908152600460205260409020805463ffffffff191663ffffffff92909216919091179055612659565b600383600981111561230357fe5b14156123865761235161234163ffffffff7f00000000000000000000000000000000000000000000000000000000000000008116906002906132fa16565b63ffffffff428116919061329716565b6001600160a01b0383166000908152601460205260409020805463ffffffff191663ffffffff92909216919091179055612659565b600483600981111561239457fe5b1415612403576123ce63ffffffff428116907f00000000000000000000000000000000000000000000000000000000000000009061329716565b6001600160a01b0383166000908152601060205260409020805463ffffffff191663ffffffff92909216919091179055612659565b600583600981111561241157fe5b14156124805761244b63ffffffff428116907f00000000000000000000000000000000000000000000000000000000000000009061329716565b6001600160a01b0383166000908152600d60205260409020805463ffffffff191663ffffffff92909216919091179055612659565b600683600981111561248e57fe5b1415612501576124cc61234163ffffffff7f00000000000000000000000000000000000000000000000000000000000000008116906002906132fa16565b6001600160a01b0383166000908152601760205260409020805463ffffffff191663ffffffff92909216919091179055612659565b600783600981111561250f57fe5b141561257e5761254963ffffffff428116907f00000000000000000000000000000000000000000000000000000000000000009061329716565b6001600160a01b0383166000908152601a60205260409020805463ffffffff191663ffffffff92909216919091179055612659565b600883600981111561258c57fe5b14156125fb576125c663ffffffff428116907f00000000000000000000000000000000000000000000000000000000000000009061329716565b6001600160a01b0383166000908152601e60205260409020805463ffffffff191663ffffffff92909216919091179055612659565b600983600981111561260957fe5b14156126515761264363ffffffff428116907f00000000000000000000000000000000000000000000000000000000000000009061329716565b63ffffffff16602055612659565b5060006115ea565b82600981111561266557fe5b604080516001600160a01b038516815290517f0e4f2c4b5bc209d509bc3d49348c787fefadc66a79351b470599ac0f5be52eaf9181900360200190a250600192915050565b60136020526000908152604090205460ff1681565b60196020526000908152604090205460ff1681565b7f000000000000000000000000000000000000000000000000000000000000000081565b601e6020526000908152604090205463ffffffff1681565b600080546001600160a01b03163314612770576040805162461bcd60e51b815260206004820181905260248201527f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572604482015290519081900360640190fd5b6001600160a01b03831661278357600080fd5b60008085600981111561279257fe5b1415612858576127a5600760068661336b565b15612828576001600160a01b0384166000908152600760205260409020805463ffffffff191690556127d8600585613483565b61282857600580546001810182556000919091527f036b6384b5eca791c62761152d0c79bb0604c104a5fb6f4eb0703f3154bb3db00180546001600160a01b0319166001600160a01b0386161790555b506001600160a01b0383166000908152600660205260409020805460ff81161560ff199091168117909155612fda565b600185600981111561286657fe5b141561292c57612879600a60098661336b565b156128fc576001600160a01b0384166000908152600a60205260409020805463ffffffff191690556128ac600885613483565b6128fc57600880546001810182556000919091527ff3f7a9fe364faab93b216da50a3214154f22a0a2b415b23a84c8169e8b636ee30180546001600160a01b0319166001600160a01b0386161790555b506001600160a01b0383166000908152600960205260409020805460ff81161560ff199091168117909155612fda565b600285600981111561293a57fe5b1415612a005761294d600460038661336b565b156129d0576001600160a01b0384166000908152600460205260409020805463ffffffff19169055612980600285613483565b6129d057600280546001810182556000919091527f405787fa12a823e0f2b7631cc41b3ba8828b3321ca811111fa75cd3aa3bb5ace0180546001600160a01b0319166001600160a01b0386161790555b506001600160a01b0383166000908152600360205260409020805460ff81161560ff199091168117909155612fda565b6003856009811115612a0e57fe5b1415612b1157612a21601460138661336b565b15612ae157601280546001810182557fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440180546001600160a01b0319166001600160a01b0387169081179091556000908152601460205260409020805463ffffffff19169055612a919085613483565b612ae157601280546001810182556000919091527fbb8a6a4669ba250d26cd7a459eca9d215f8307e33aebe50379bc5a3617ec34440180546001600160a01b0319166001600160a01b0386161790555b506001600160a01b0383166000908152601360205260409020805460ff81161560ff199091168117909155612fda565b6004856009811115612b1f57fe5b1415612c2257612b326010600f8661336b565b15612bf257600e80546001810182557fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319166001600160a01b0387169081179091556000908152601060205260409020805463ffffffff19169055612ba29085613483565b612bf257600e80546001810182556000919091527fbb7b4a454dc3493923482f07822329ed19e8244eff582cc204f8554c3620c3fd0180546001600160a01b0319166001600160a01b0386161790555b506001600160a01b0383166000908152600f60205260409020805460ff81161560ff199091168117909155612fda565b6005856009811115612c3057fe5b1415612d1857612c43600d600c8661336b565b15612cc6576001600160a01b0384166000908152600d60205260409020805463ffffffff19169055612c76600b85613483565b612cc657600b80546001810182556000919091527f0175b7a638427703f0dbe7bb9bbf987a2551717b34e79f33b5b1008d1fa01db90180546001600160a01b0319166001600160a01b0386161790555b506001600160a01b038381166000908152600c60209081526040808320805460ff81161560ff199091168117909155601190925290912080546001600160a01b03191692851692909217909155612fda565b6006856009811115612d2657fe5b1415612dec57612d39601760168661336b565b15612dbc576001600160a01b0384166000908152601760205260409020805463ffffffff19169055612d6c601585613483565b612dbc57601580546001810182556000919091527f55f448fdea98c4d29eb340757ef0a66cd03dbb9538908a6a81d96026b71ec4750180546001600160a01b0319166001600160a01b0386161790555b506001600160a01b0383166000908152601660205260409020805460ff81161560ff199091168117909155612fda565b6007856009811115612dfa57fe5b1415612ec057612e0d601a60198661336b565b15612e90576001600160a01b0384166000908152601a60205260409020805463ffffffff19169055612e40601885613483565b612e9057601880546001810182556000919091527fb13d2d76d1f4b7be834882e410b3e3a8afaf69f83600ae24db354391d2378d2e0180546001600160a01b0319166001600160a01b0386161790555b506001600160a01b0383166000908152601960205260409020805460ff81161560ff199091168117909155612fda565b6008856009811115612ece57fe5b1415612f9457612ee1601e601d8661336b565b15612f64576001600160a01b0384166000908152601e60205260409020805463ffffffff19169055612f14601c85613483565b612f6457601c80546001810182556000919091527f0e4562a10381dec21b205ed72637e6b1b523bdd0e4d4d50af5cd23dd4500a2110180546001600160a01b0319166001600160a01b0386161790555b506001600160a01b0383166000908152601d60205260409020805460ff81161560ff199091168117909155612fda565b6009856009811115612fa257fe5b1415612fd057506000602055601f80546001600160a01b0319166001600160a01b0385161790556001612fda565b6000915050613031565b846009811115612fe657fe5b604080516001600160a01b0387168152831515602082015281517f0dcacb7e392f3d6a216ed2660e3dcfd40b7793d33591db2ba185a6b8e44fc477929181900390910190a260019150505b9392505050565b60225481565b600b8181548110610bd357600080fd5b60106020526000908152604090205463ffffffff1681565b600061303183836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f7700008152506134d3565b604080516001600160a01b038416602482015260448082018490528251808303909101815260649091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff1663a9059cbb60e01b17905261310f90849061356a565b505050565b600082820183811015613031576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b60008261317d575060006115ea565b8282028284828161318a57fe5b04146130315760405162461bcd60e51b81526004018080602001828103825260218152602001806138536021913960400191505060405180910390fd5b600061303183836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f00000000000081525061361b565b604080516001600160a01b0380861660248301528416604482015260648082018490528251808303909101815260849091019091526020810180517bffffffffffffffffffffffffffffffffffffffffffffffffffffffff167f23b872dd0000000000000000000000000000000000000000000000000000000017905261329190859061356a565b50505050565b600082820163ffffffff8085169082161015613031576040805162461bcd60e51b815260206004820152601b60248201527f536166654d6174683a206164646974696f6e206f766572666c6f770000000000604482015290519081900360640190fd5b600063ffffffff831661330f575060006115ea565b82820263ffffffff808416908086169083168161332857fe5b0463ffffffff16146130315760405162461bcd60e51b81526004018080602001828103825260218152602001806138536021913960400191505060405180910390fd5b6001600160a01b03811660009081526020839052604081205460ff16613479576001600160a01b03821660009081526020859052604090205463ffffffff166133fb576040805162461bcd60e51b815260206004820152600a60248201527f4d75737420717565756500000000000000000000000000000000000000000000604482015290519081900360640190fd5b6001600160a01b03821660009081526020859052604090205463ffffffff42811691161115613471576040805162461bcd60e51b815260206004820152601160248201527f5175657565206e6f742065787069726564000000000000000000000000000000604482015290519081900360640190fd5b506001613031565b5060009392505050565b6000805b835481101561347957826001600160a01b03168482815481106134a657fe5b6000918252602090912001546001600160a01b031614156134cb5760019150506115ea565b600101613487565b600081848411156135625760405162461bcd60e51b81526004018080602001828103825283818151815260200191508051906020019080838360005b8381101561352757818101518382015260200161350f565b50505050905090810190601f1680156135545780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b505050900390565b60606135bf826040518060400160405280602081526020017f5361666545524332303a206c6f772d6c6576656c2063616c6c206661696c6564815250856001600160a01b03166136809092919063ffffffff16565b80519091501561310f578080602001905160208110156135de57600080fd5b505161310f5760405162461bcd60e51b815260040180806020018281038252602a815260200180613874602a913960400191505060405180910390fd5b6000818361366a5760405162461bcd60e51b815260206004820181815283516024840152835190928392604490910191908501908083836000831561352757818101518382015260200161350f565b50600083858161367657fe5b0495945050505050565b606061368f8484600085613697565b949350505050565b60606136a285613804565b6136f3576040805162461bcd60e51b815260206004820152601d60248201527f416464726573733a2063616c6c20746f206e6f6e2d636f6e7472616374000000604482015290519081900360640190fd5b60006060866001600160a01b031685876040518082805190602001908083835b602083106137325780518252601f199092019160209182019101613713565b6001836020036101000a03801982511681845116808217855250505050505090500191505060006040518083038185875af1925050503d8060008114613794576040519150601f19603f3d011682016040523d82523d6000602084013e613799565b606091505b509150915081156137ad57915061368f9050565b8051156137bd5780518082602001fd5b60405162461bcd60e51b815260206004820181815286516024840152865187939192839260440191908501908083836000831561352757818101518382015260200161350f565b3b15159056fe4f776e61626c653a206e6577206f776e657220697320746865207a65726f20616464726573734f776e61626c653a206d757374206265206e6577206f776e657220746f2070756c6c536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f775361666545524332303a204552433230206f7065726174696f6e20646964206e6f742073756363656564a2646970667358221220431ee5775ec5a18026a34d8da41a2f0cb958b40da6dad92ff063830edb48358b64736f6c63430007050033000000000000000000000000f2f7ce610a091b94d41d69f4ff1129434a82e2f0000000000000000000000000130966628846bfd36ff31a822705796e8cb8c18d0000000000000000000000000000000000000000000000000000000000000001

Constructor Arguments (ABI-Encoded and is the last bytes of the Contract Creation Code above)

000000000000000000000000f2f7ce610a091b94d41d69f4ff1129434a82e2f0000000000000000000000000130966628846bfd36ff31a822705796e8cb8c18d0000000000000000000000000000000000000000000000000000000000000001

-----Decoded View---------------
Arg [0] : _Time (address): 0xf2f7ce610a091b94d41d69f4ff1129434a82e2f0
Arg [1] : _MIM (address): 0x130966628846bfd36ff31a822705796e8cb8c18d
Arg [2] : _secondsNeededForQueue (uint32): 1

-----Encoded View---------------
3 Constructor Arguments found :
Arg [0] : 000000000000000000000000f2f7ce610a091b94d41d69f4ff1129434a82e2f0
Arg [1] : 000000000000000000000000130966628846bfd36ff31a822705796e8cb8c18d
Arg [2] : 0000000000000000000000000000000000000000000000000000000000000001


Deployed ByteCode Sourcemap

7313:19566:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;12752:582;;;;;;;;;;;;;;;;-1:-1:-1;12752:582:0;;;;;;-1:-1:-1;;;;;12752:582:0;;:::i;:::-;;9895:32;;;;;;;;;;;;;;;;-1:-1:-1;9895:32:0;;:::i;:::-;;;;-1:-1:-1;;;;;9895:32:0;;;;;;;;;;;;;;4704:159;;;:::i;10613:47::-;;;;;;;;;;;;;;;;-1:-1:-1;10613:47:0;-1:-1:-1;;;;;10613:47:0;;:::i;:::-;;;;;;;;;;;;;;;;15794:626;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;15794:626:0;;;;;;;;:::i;16954:147::-;;;:::i;15271:378::-;;;;;;;;;;;;;;;;-1:-1:-1;15271:378:0;;:::i;8909:52::-;;;;;;;;;;;;;;;;-1:-1:-1;8909:52:0;-1:-1:-1;;;;;8909:52:0;;:::i;:::-;;;;;;;;;;;;;;;;;;13479:863;;;;;;;;;;;;;;;;-1:-1:-1;13479:863:0;;;;;;-1:-1:-1;;;;;13479:863:0;;:::i;9796:51::-;;;;;;;;;;;;;;;;-1:-1:-1;9796:51:0;-1:-1:-1;;;;;9796:51:0;;:::i;18085:459::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;18085:459:0;;;;;;;;:::i;10942:21::-;;;:::i;17254:668::-;;;:::i;9064:32::-;;;;;;;;;;;;;;;;-1:-1:-1;9064:32:0;;:::i;4871:261::-;;;;;;;;;;;;;;;;-1:-1:-1;4871:261:0;-1:-1:-1;;;;;4871:261:0;;:::i;4477:90::-;;;:::i;10912:23::-;;;:::i;10763:49::-;;;;;;;;;;;;;;;;-1:-1:-1;10763:49:0;-1:-1:-1;;;;;10763:49:0;;:::i;5144:221::-;;;:::i;8665:48::-;;;;;;;;;;;;;;;;-1:-1:-1;8665:48:0;-1:-1:-1;;;;;8665:48:0;;:::i;16501:344::-;;;;;;;;;;;;;;;;-1:-1:-1;;;;;;16501:344:0;;;;;;;;:::i;8812:34::-;;;;;;;;;;;;;;;;-1:-1:-1;8812:34:0;;:::i;10141:::-;;;;;;;;;;;;;;;;-1:-1:-1;10141:34:0;;:::i;8720:53::-;;;;;;;;;;;;;;;;-1:-1:-1;8720:53:0;-1:-1:-1;;;;;8720:53:0;;:::i;:::-;;;;;;;;;;;;;;;;;;;8536:45;;;:::i;10393:24::-;;;;;;;;;;;;;;;;-1:-1:-1;10393:24:0;;:::i;9159:50::-;;;;;;;;;;;;;;;;-1:-1:-1;9159:50:0;-1:-1:-1;;;;;9159:50:0;;:::i;9444:55::-;;;;;;;;;;;;;;;;-1:-1:-1;9444:55:0;-1:-1:-1;;;;;9444:55:0;;:::i;9538:36::-;;;;;;;;;;;;;;;;-1:-1:-1;9538:36:0;;:::i;11009:25::-;;;:::i;8968:57::-;;;;;;;;;;;;;;;;-1:-1:-1;8968:57:0;-1:-1:-1;;;;;8968:57:0;;:::i;9637:54::-;;;;;;;;;;;;;;;;-1:-1:-1;9637:54:0;-1:-1:-1;;;;;9637:54:0;;:::i;9387:50::-;;;;;;;;;;;;;;;;-1:-1:-1;9387:50:0;-1:-1:-1;;;;;9387:50:0;;:::i;10297:57::-;;;;;;;;;;;;;;;;-1:-1:-1;10297:57:0;-1:-1:-1;;;;;10297:57:0;;:::i;10047:55::-;;;;;;;;;;;;;;;;-1:-1:-1;10047:55:0;-1:-1:-1;;;;;10047:55:0;;:::i;10669:31::-;;;;;;;;;;;;;;;;-1:-1:-1;10669:31:0;;:::i;11725:876::-;;;;;;;;;;;;;;;;-1:-1:-1;11725:876:0;;;-1:-1:-1;;;;;11725:876:0;;;;;;;;;;:::i;9216:55::-;;;;;;;;;;;;;;;;-1:-1:-1;9216:55:0;-1:-1:-1;;;;;9216:55:0;;:::i;10529:47::-;;;;;;;;;;;;;;;;-1:-1:-1;10529:47:0;-1:-1:-1;;;;;10529:47:0;;:::i;8590:30::-;;;;;;;;;;;;;;;;-1:-1:-1;8590:30:0;;:::i;14509:631::-;;;;;;;;;;;;;;;;-1:-1:-1;14509:631:0;;;;;;-1:-1:-1;;;;;14509:631:0;;:::i;10238:52::-;;;;;;;;;;;;;;;;-1:-1:-1;10238:52:0;-1:-1:-1;;;;;10238:52:0;;:::i;18720:1929::-;;;;;;;;;;;;;;;;-1:-1:-1;18720:1929:0;;;;;;;;-1:-1:-1;;;;;18720:1929:0;;:::i;9990:50::-;;;;;;;;;;;;;;;;-1:-1:-1;9990:50:0;-1:-1:-1;;;;;9990:50:0;;:::i;10480:42::-;;;;;;;;;;;;;;;;-1:-1:-1;10480:42:0;-1:-1:-1;;;;;10480:42:0;;:::i;8500:29::-;;;:::i;10819:54::-;;;;;;;;;;;;;;;;-1:-1:-1;10819:54:0;-1:-1:-1;;;;;10819:54:0;;:::i;20859:4872::-;;;;;;;;;;;;;;;;-1:-1:-1;20859:4872:0;;;;;-1:-1:-1;;;;;20859:4872:0;;;;;;;;;;;;:::i;11074:21::-;;;:::i;9310:32::-;;;;;;;;;;;;;;;;-1:-1:-1;9310:32:0;;:::i;9698:59::-;;;;;;;;;;;;;;;;-1:-1:-1;9698:59:0;-1:-1:-1;;;;;9698:59:0;;:::i;12752:582::-;-1:-1:-1;;;;;12831:24:0;;;;;;:14;:24;;;;;;;;12822:51;;;;;-1:-1:-1;;;12822:51:0;;;;;;;;;;;;-1:-1:-1;;;12822:51:0;;;;;;;;;;;;;;;12956:10;12938:30;;;;:16;:30;;;;;;;;:38;;:30;:38;12929:65;;;;;-1:-1:-1;;;12929:65:0;;;;;;;;;;;;-1:-1:-1;;;12929:65:0;;;;;;;;;;;;;;;13007:10;13020:26;13029:6;13037:7;13020;:26::i;:::-;13007:39;;13068:4;-1:-1:-1;;;;;13057:26:0;;13085:10;13097:5;13057:47;;;;;;;;;;;;;-1:-1:-1;;;;;13057:47:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;13133:13:0;;:26;;-1:-1:-1;13133:13:0;-1:-1:-1;13152:5:0;13133:17;:26::i;:::-;13117:13;:42;;;13175:32;;;;;;;13220:52;-1:-1:-1;;;;;13220:29:0;;13251:10;13263:7;13220:29;:52::i;:::-;13290:36;;;;;;;;;;;;;;-1:-1:-1;;;;;13290:36:0;;;;;;;;;;;12752:582;;;:::o;9895:32::-;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;9895:32:0;;-1:-1:-1;9895:32:0;:::o;4704:159::-;4618:6;;-1:-1:-1;;;;;4618:6:0;4628:10;4618:20;4609:67;;;;;-1:-1:-1;;;4609:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4821:1:::1;4805:6:::0;;4788:37:::1;::::0;-1:-1:-1;;;;;4805:6:0;;::::1;::::0;4788:37:::1;::::0;4821:1;;4788:37:::1;4853:1;4836:19:::0;;-1:-1:-1;;;;;;4836:19:0::1;::::0;;4704:159::o;10613:47::-;;;;;;;;;;;;;:::o;15794:626::-;-1:-1:-1;;;;;15866:26:0;;;;;;:16;:26;;;;;;;;15862:209;;;15939:10;15919:32;;;;:18;:32;;;;;;;;15910:59;;;;;-1:-1:-1;;;15910:59:0;;;;;;;;;;;;-1:-1:-1;;;15910:59:0;;;;;;;;;;;;;;;15862:209;;;16029:10;16011:30;;;;:16;:30;;;;;;;;16002:57;;;;;-1:-1:-1;;;16002:57:0;;;;;;;;;;;;-1:-1:-1;;;16002:57:0;;;;;;;;;;;;;;;16083:10;16096:24;16104:6;16112:7;16096;:24::i;:::-;16083:37;;16149:16;:14;:16::i;:::-;16140:5;:25;;16131:61;;;;;-1:-1:-1;;;16131:61:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16221:13;;:26;;16240:5;16221:17;:26::i;:::-;16205:13;:42;;;16263:32;;;;;;;16308:52;-1:-1:-1;;;;;16308:29:0;;16339:10;16351:7;16308:29;:52::i;:::-;16378:34;;;;;;;;-1:-1:-1;;;;;16378:34:0;;;;;;;;;;;;;15794:626;;;:::o;16954:147::-;17002:4;17027:66;17046:45;17080:9;;17054:4;-1:-1:-1;;;;;17046:26:0;;:28;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;17046:28:0;;:32;:45::i;:::-;17027:13;;;:17;:66::i;:::-;17020:73;;16954:147;:::o;15271:378::-;15352:10;15342:22;;;;:8;:22;;;;;;;;15333:49;;;;;-1:-1:-1;;;15333:49:0;;;;;;;;;;;;-1:-1:-1;;;15333:49:0;;;;;;;;;;;;;;;15395;;;;;;15423:10;15395:49;;;;;;;;;;;;-1:-1:-1;;;;;15406:4:0;15395:26;;;;:49;;;;;-1:-1:-1;;15395:49:0;;;;;;;-1:-1:-1;15395:26:0;:49;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;15502:10:0;15487:27;;;;:13;:27;;;;;;:42;;-1:-1:-1;15487:27:0;-1:-1:-1;15520:7:0;15487:31;:42::i;:::-;15472:10;15457:27;;;;:13;:27;;;;;:72;15552:9;;:24;;15567:7;15552:13;:24::i;:::-;15540:9;:36;15594:47;;;;;;;;;;;;;;-1:-1:-1;;;;;15617:4:0;15594:47;;15605:10;;15594:47;;;;;;;;;;;15271:378;:::o;8909:52::-;;;;;;;;;;;;;;;:::o;13479:863::-;13569:10;13559:22;;;;:8;:22;;;;;;;;13550:49;;;;;-1:-1:-1;;;13550:49:0;;;;;;;;;;;;-1:-1:-1;;;13550:49:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;13619:24:0;;;;;;:14;:24;;;;;;;;13610:51;;;;;-1:-1:-1;;;13610:51:0;;;;;;;;;;;;-1:-1:-1;;;13610:51:0;;;;;;;;;;;;;;;13674:10;13687:26;13696:6;13704:7;13687;:26::i;:::-;13753:8;;13745:42;;;-1:-1:-1;;;13745:42:0;;13775:10;13745:42;;;;;;13674:39;;-1:-1:-1;13726:16:0;;-1:-1:-1;;;;;13753:8:0;;;;13745:28;;:42;;;;;;;;;;;;;;;13753:8;13745:42;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;13745:42:0;13888:10;13835:18;13873:27;;;:13;13745:42;13873:27;;;;;13745:42;;-1:-1:-1;13835:18:0;13856:46;;13745:42;;13856:15;:46::i;:::-;13835:67;;13931:13;13922:5;:22;;13913:55;;;;;-1:-1:-1;;;13913:55:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;14026:10;14011:27;;;;:13;:27;;;;;;:40;;14044:5;14011:31;:40::i;:::-;13996:10;13981:27;;;;:13;:27;;;;;:70;14074:9;;:22;;14089:5;14074:13;:22::i;:::-;14062:9;:34;14125:13;;:26;;14144:5;14125:17;:26::i;:::-;14109:13;:42;;;14167:32;;;;;;;14212:48;;;-1:-1:-1;;;14212:48:0;;14239:10;14212:48;;;;;;;;;;;;-1:-1:-1;;;;;14212:25:0;;;;;:48;;;;;;;;;;;;;;-1:-1:-1;14212:25:0;:48;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;14286:48:0;;;;;;14212;14286;;;;;;;-1:-1:-1;;;;;14286:48:0;;;14298:10;;14286:48;;;;;;;;;;;13479:863;;;;;:::o;9796:51::-;;;;;;;;;;;;-1:-1:-1;;;;;9796:51:0;;:::o;18085:459::-;-1:-1:-1;;;;;18186:24:0;;18156:11;18186:24;;;:14;:24;;;;;;;;18181:356;;;18290:87;18356:6;-1:-1:-1;;;;;18348:25:0;;:27;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18348:27:0;18309:25;;;;;;;;18342:33;;;;:2;:33;;18290:46;;-1:-1:-1;;;;;18317:4:0;18309:23;;;;:25;;;;;18348:27;;18309:25;;;;;;;;:23;:25;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18309:25:0;18290:7;;18303:31;;:2;:31;18290:11;:46::i;:::-;:50;;:87::i;:::-;18281:96;;18181:356;;;-1:-1:-1;;;;;18400:26:0;;;;;;:16;:26;;;;;;;;18395:142;;;-1:-1:-1;;;;;18470:24:0;;;;;;;:14;:24;;;;;;;;;;18453:72;;;;;;;;;;;;;;;;;;;;18470:24;;;;;18453:53;;:72;;;;;;;;;;;18470:24;18453:72;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;18453:72:0;;-1:-1:-1;18395:142:0;18085:459;;;;:::o;10942:21::-;;;;:::o;17254:668::-;4618:6;;-1:-1:-1;;;;;4618:6:0;4628:10;4618:20;4609:67;;;;;-1:-1:-1;;;4609:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;17313:13:::1;::::0;17337:221:::1;17358:13;:20:::0;17354:24;::::1;17337:221;;;17412:134;17445:86;17454:13;17469:1;17454:18;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;17482:13:::1;:18:::0;;-1:-1:-1;;;;;17454:18:0;;::::1;::::0;17497:1;;17482:18;::::1;;;;;;::::0;;;::::1;::::0;;;;::::1;::::0;17474:55:::1;::::0;;-1:-1:-1;;;17474:55:0;;17522:4:::1;17474:55;::::0;::::1;::::0;;;-1:-1:-1;;;;;17482:18:0;;::::1;::::0;17474:38:::1;::::0;:55;;;;;;;;;;17482:18;17474:55;::::1;;::::0;::::1;;;;::::0;::::1;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;::::0;::::1;;-1:-1:-1::0;17474:55:0;17445:7:::1;:86::i;:::-;17412:8:::0;;:12:::1;:134::i;:::-;17401:145:::0;-1:-1:-1;17380:3:0::1;;17337:221;;;;17573:6;17568:226;17589:15;:22:::0;17585:26;::::1;17568:226;;;17645:137;17677:90;17686:15;17703:1;17686:20;;;;;;;;;::::0;;;::::1;::::0;;;::::1;::::0;17716:15:::1;:20:::0;;-1:-1:-1;;;;;17686:20:0;;::::1;::::0;17733:1;;17716:20;::::1;;;;17645:137;17634:148:::0;-1:-1:-1;17613:3:0::1;;17568:226;;;-1:-1:-1::0;17804:13:0::1;:24:::0;;;17844:27:::1;::::0;17820:8;;17844:27:::1;::::0;;;::::1;17887;::::0;17904:8;;17887:27:::1;::::0;;;::::1;4687:1;17254:668::o:0;9064:32::-;;;;;;;;;;;;4871:261;4618:6;;-1:-1:-1;;;;;4618:6:0;4628:10;4618:20;4609:67;;;;;-1:-1:-1;;;4609:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;4974:23:0;::::1;4965:75;;;;-1:-1:-1::0;;;4965:75:0::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5073:6;::::0;;5056:36:::1;::::0;-1:-1:-1;;;;;5056:36:0;;::::1;::::0;5073:6;::::1;::::0;5056:36:::1;::::0;::::1;5103:9;:21:::0;;-1:-1:-1;;;;;;5103:21:0::1;-1:-1:-1::0;;;;;5103:21:0;;;::::1;::::0;;;::::1;::::0;;4871:261::o;4477:90::-;4526:7;4553:6;-1:-1:-1;;;;;4553:6:0;4477:90;:::o;10912:23::-;;;-1:-1:-1;;;;;10912:23:0;;:::o;10763:49::-;;;;;;;;;;;;;;;:::o;5144:221::-;5228:9;;-1:-1:-1;;;;;5228:9:0;5214:10;:23;5205:71;;;;-1:-1:-1;;;5205:71:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5317:9;;;5309:6;;5292:36;;-1:-1:-1;;;;;5317:9:0;;;;5309:6;;;;5292:36;;;5348:9;;;5339:18;;-1:-1:-1;;;;;;5339:18:0;-1:-1:-1;;;;;5348:9:0;;;5339:18;;;;;;5144:221::o;8665:48::-;;;;;;;;;;;;;;;:::o;16501:344::-;16604:10;16587:29;;;;:15;:29;;;;;;;;16578:56;;;;;-1:-1:-1;;;16578:56:0;;;;;;;;;;;;-1:-1:-1;;;16578:56:0;;;;;;;;;;;;;;;16665:16;:14;:16::i;:::-;16654:7;:27;;16645:63;;;;;-1:-1:-1;;;16645:63:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;16737:4;-1:-1:-1;;;;;16721:27:0;;16750:10;16762:7;16721:50;;;;;;;;;;;;;-1:-1:-1;;;;;16721:50:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;16789:48:0;;;;;;;;-1:-1:-1;;;;;16789:48:0;;;-1:-1:-1;16804:10:0;;-1:-1:-1;16789:48:0;;;;;;;;;16501:344;;:::o;8812:34::-;;;;;;;;;;;;10141;;;;;;;;;;;;8720:53;;;;;;;;;;;;;;;:::o;8536:45::-;;;:::o;10393:24::-;;;;;;;;;;;;9159:50;;;;;;;;;;;;;;;:::o;9444:55::-;;;;;;;;;;;;;;;:::o;9538:36::-;;;;;;;;;;;;11009:25;;;;:::o;8968:57::-;;;;;;;;;;;;;;;:::o;9637:54::-;;;;;;;;;;;;;;;:::o;9387:50::-;;;;;;;;;;;;;;;:::o;10297:57::-;;;;;;;;;;;;;;;:::o;10047:55::-;;;;;;;;;;;;;;;:::o;10669:31::-;;;;;;;;;;;;11725:876;-1:-1:-1;;;;;11840:24:0;;11807:10;11840:24;;;:14;:24;;;;;;;;;:54;;-1:-1:-1;;;;;;11868:26:0;;;;;;:16;:26;;;;;;;;11840:54;11831:81;;;;;-1:-1:-1;;;11831:81:0;;;;;;;;;;;;-1:-1:-1;;;11831:81:0;;;;;;;;;;;;;;;11923:71;-1:-1:-1;;;;;11923:33:0;;11958:10;11978:4;11985:7;11923:33;:71::i;:::-;-1:-1:-1;;;;;12012:24:0;;;;;;:14;:24;;;;;;;;12007:212;;;12083:10;12063:32;;;;:18;:32;;;;;;;;12054:59;;;;;-1:-1:-1;;;12054:59:0;;;;;;;;;;;;-1:-1:-1;;;12054:59:0;;;;;;;;;;;;;;;12007:212;;;12177:10;12155:34;;;;:20;:34;;;;;;;;12146:61;;;;;-1:-1:-1;;;12146:61:0;;;;;;;;;;;;-1:-1:-1;;;12146:61:0;;;;;;;;;;;;;;;12231:10;12244:24;12252:6;12260:7;12244;:24::i;:::-;12231:37;-1:-1:-1;12360:20:0;12231:37;12371:7;12360:9;:20::i;:::-;12352:28;;12407:4;-1:-1:-1;;;;;12391:27:0;;12420:10;12432:5;12391:48;;;;;;;;;;;;;-1:-1:-1;;;;;12391:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;12468:13:0;;:26;;-1:-1:-1;12468:13:0;-1:-1:-1;12487:5:0;12468:17;:26::i;:::-;12452:13;:42;;;12510:32;;;;;;;12560:33;;;;;;;;;;;;;;-1:-1:-1;;;;;12560:33:0;;;;;;;;;;;11725:876;;;;;;:::o;9216:55::-;;;;;;;;;;;;;;;:::o;10529:47::-;;;;;;;;;;;;;;;:::o;8590:30::-;;;;;;;;;;;;14509:631;14610:10;14600:22;;;;:8;:22;;;;;;;;14591:49;;;;;-1:-1:-1;;;14591:49:0;;;;;;;;;;;;-1:-1:-1;;;14591:49:0;;;;;;;;;;;;;;;-1:-1:-1;;;;;14660:24:0;;;;;;:14;:24;;;;;;;;14651:51;;;;;-1:-1:-1;;;14651:51:0;;;;;;;;;;;;-1:-1:-1;;;14651:51:0;;;;;;;;;;;;;;;14715:71;-1:-1:-1;;;;;14715:33:0;;14750:10;14770:4;14777:7;14715:33;:71::i;:::-;14799:10;14812:26;14821:6;14829:7;14812;:26::i;:::-;14894:10;14879:27;;;;:13;:27;;;;;;14799:39;;-1:-1:-1;14879:40:0;;14799:39;14879:31;:40::i;:::-;14864:10;14849:27;;;;:13;:27;;;;;:70;14942:9;;:22;;14957:5;14942:13;:22::i;:::-;14930:9;:34;14993:13;;:26;;15012:5;14993:17;:26::i;:::-;14977:13;:42;;;15035:32;;;;;;;15085:47;;;;;;;;;;;;;;-1:-1:-1;;;;;15085:47:0;;;15096:10;;15085:47;;;;;;;;;;;14509:631;;;:::o;10238:52::-;;;;;;;;;;;;;;;:::o;18720:1929::-;18808:4;4618:6;;-1:-1:-1;;;;;4618:6:0;4628:10;4618:20;4609:67;;;;;-1:-1:-1;;;4609:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;18835:22:0;::::1;18826:33;;;::::0;::::1;;18888:25;18875:9;:38;;;;;;;;;18870:1696;;;18972:54;:29;18979:15;18972:29:::0;::::1;::::0;19003:21:::1;::::0;18972:29:::1;:54;:::i;:::-;-1:-1:-1::0;;;;;18936:33:0;::::1;;::::0;;;:21:::1;:33;::::0;;;;:90;;-1:-1:-1;;18936:90:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;18870:1696:::1;;;19062:23;19049:9;:36;;;;;;;;;19044:1522;;;19142:54;:29;19149:15;19142:29:::0;::::1;::::0;19173:21:::1;::::0;19142:29:::1;:54;:::i;:::-;-1:-1:-1::0;;;;;19108:31:0;::::1;;::::0;;;:19:::1;:31;::::0;;;;:88;;-1:-1:-1;;19108:88:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;19044:1522:::1;;;19232:21;19219:9;:34;;;;;;;;;19214:1352;;;19308:54;:29;19315:15;19308:29:::0;::::1;::::0;19339:21:::1;::::0;19308:29:::1;:54;:::i;:::-;-1:-1:-1::0;;;;;19276:29:0;::::1;;::::0;;;:17:::1;:29;::::0;;;;:86;;-1:-1:-1;;19276:86:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;19214:1352:::1;;;19398:23;19385:9;:36;;;;;;;;;19380:1186;;;19478:65;19509:32;:27;:21;:27:::0;::::1;::::0;19538:1:::1;::::0;19509:27:::1;:32;:::i;:::-;19478:29;19485:15;19478:29:::0;::::1;::::0;:65;:29:::1;:65;:::i;:::-;-1:-1:-1::0;;;;;19444:31:0;::::1;;::::0;;;:19:::1;:31;::::0;;;;:99;;-1:-1:-1;;19444:99:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;19380:1186:::1;;;19579:27;19566:9;:40;;;;;;;;;19561:1005;;;19667:54;:29;19674:15;19667:29:::0;::::1;::::0;19698:21:::1;::::0;19667:29:::1;:54;:::i;:::-;-1:-1:-1::0;;;;;19629:35:0;::::1;;::::0;;;:23:::1;:35;::::0;;;;:92;;-1:-1:-1;;19629:92:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;19561:1005:::1;;;19757:23;19744:9;:36;;;;;;;;;19739:827;;;19837:54;:29;19844:15;19837:29:::0;::::1;::::0;19868:21:::1;::::0;19837:29:::1;:54;:::i;:::-;-1:-1:-1::0;;;;;19803:31:0;::::1;;::::0;;;:19:::1;:31;::::0;;;;:88;;-1:-1:-1;;19803:88:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;19739:827:::1;;;19927:25;19914:9;:38;;;;;;;;;19909:657;;;20011:65;20042:32;:27;:21;:27:::0;::::1;::::0;20071:1:::1;::::0;20042:27:::1;:32;:::i;20011:65::-;-1:-1:-1::0;;;;;19975:33:0;::::1;;::::0;;;:21:::1;:33;::::0;;;;:101;;-1:-1:-1;;19975:101:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;19909:657:::1;;;20112:15;20099:9;:28;;;;;;;;;20094:472;;;20176:54;:29;20183:15;20176:29:::0;::::1;::::0;20207:21:::1;::::0;20176:29:::1;:54;:::i;:::-;-1:-1:-1::0;;;;;20150:23:0;::::1;;::::0;;;:11:::1;:23;::::0;;;;:80;;-1:-1:-1;;20150:80:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;20094:472:::1;;;20266:22;20253:9;:35;;;;;;;;;20248:318;;;20344:54;:29;20351:15;20344:29:::0;::::1;::::0;20375:21:::1;::::0;20344:29:::1;:54;:::i;:::-;-1:-1:-1::0;;;;;20311:30:0;::::1;;::::0;;;:18:::1;:30;::::0;;;;:87;;-1:-1:-1;;20311:87:0::1;;::::0;;;::::1;::::0;;;::::1;::::0;;20248:318:::1;;;20434:13;20421:9;:26;;;;;;;;;20416:150;;;20482:54;:29;20489:15;20482:29:::0;::::1;::::0;20513:21:::1;::::0;20482:29:::1;:54;:::i;:::-;20470:66;;:9;:66:::0;20416:150:::1;;;-1:-1:-1::0;20561:5:0::1;20554:12;;20416:150;20598:9;20584:35;;;;;;;;;::::0;;-1:-1:-1;;;;;20584:35:0;::::1;::::0;;;;::::1;::::0;;;;::::1;::::0;;::::1;-1:-1:-1::0;20637:4:0::1;18720:1929:::0;;;;:::o;9990:50::-;;;;;;;;;;;;;;;:::o;10480:42::-;;;;;;;;;;;;;;;:::o;8500:29::-;;;:::o;10819:54::-;;;;;;;;;;;;;;;:::o;20859:4872::-;21004:4;4618:6;;-1:-1:-1;;;;;4618:6:0;4628:10;4618:20;4609:67;;;;;-1:-1:-1;;;4609:67:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;21031:22:0;::::1;21022:33;;;::::0;::::1;;21066:11;::::0;21093:9:::1;:38;;;;;;;;;21088:4549;;;21159:67;21173:21;21196:18;21216:8;21159:12;:67::i;:::-;21154:293;;;-1:-1:-1::0;;;;;21248:33:0;::::1;21284:1;21248:33:::0;;;:21:::1;:33;::::0;;;;:37;;-1:-1:-1;;21248:37:0::1;::::0;;21309:43:::1;21323:17;21271:8:::0;21309:12:::1;:43::i;:::-;21304:128;;21378:17;:34:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;21378:34:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;21378:34:0::1;-1:-1:-1::0;;;;;21378:34:0;::::1;;::::0;;21304:128:::1;-1:-1:-1::0;;;;;;21471:30:0;::::1;;::::0;;;:18:::1;:30;::::0;;;;;;::::1;::::0;::::1;21470:31;-1:-1:-1::0;;21516:39:0;;::::1;::::0;::::1;::::0;;;21088:4549:::1;;;21605:23;21592:9;:36;;;;;;;;;21587:4050;;;21656:63;21670:19;21691:16;21709:8;21656:12;:63::i;:::-;21651:283;;;-1:-1:-1::0;;;;;21741:31:0;::::1;21775:1;21741:31:::0;;;:19:::1;:31;::::0;;;;:35;;-1:-1:-1;;21741:35:0::1;::::0;;21800:41:::1;21814:15;21762:8:::0;21800:12:::1;:41::i;:::-;21795:124;;21867:15;:32:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;21867:32:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;21867:32:0::1;-1:-1:-1::0;;;;;21867:32:0;::::1;;::::0;;21795:124:::1;-1:-1:-1::0;;;;;;21958:28:0;::::1;;::::0;;;:16:::1;:28;::::0;;;;;;::::1;::::0;::::1;21957:29;-1:-1:-1::0;;22001:37:0;;::::1;::::0;::::1;::::0;;;21587:4050:::1;;;22076:21;22063:9;:34;;;;;;;;;22058:3579;;;22125:59;22139:17;22158:14;22174:8;22125:12;:59::i;:::-;22120:273;;;-1:-1:-1::0;;;;;22206:29:0;::::1;22238:1;22206:29:::0;;;:17:::1;:29;::::0;;;;:33;;-1:-1:-1;;22206:33:0::1;::::0;;22263:39:::1;22277:13;22225:8:::0;22263:12:::1;:39::i;:::-;22258:120;;22328:13;:30:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;22328:30:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;22328:30:0::1;-1:-1:-1::0;;;;;22328:30:0;::::1;;::::0;;22258:120:::1;-1:-1:-1::0;;;;;;22417:26:0;::::1;;::::0;;;:14:::1;:26;::::0;;;;;;::::1;::::0;::::1;22416:27;-1:-1:-1::0;;22458:35:0;;::::1;::::0;::::1;::::0;;;22058:3579:::1;;;22531:23;22518:9;:36;;;;;;;;;22513:3124;;;22582:63;22596:19;22617:16;22635:8;22582:12;:63::i;:::-;22577:334;;;22667:15;:32:::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;22667:32:0::1;-1:-1:-1::0;;;;;22667:32:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;22718:31:0;;;:19:::1;22667:32;22718:31:::0;;;;:35;;-1:-1:-1;;22718:35:0::1;::::0;;22777:41:::1;::::0;22667:32;22777:12:::1;:41::i;:::-;22772:124;;22844:15;:32:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;22844:32:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;22844:32:0::1;-1:-1:-1::0;;;;;22844:32:0;::::1;;::::0;;22772:124:::1;-1:-1:-1::0;;;;;;22935:28:0;::::1;;::::0;;;:16:::1;:28;::::0;;;;;;::::1;::::0;::::1;22934:29;-1:-1:-1::0;;22978:37:0;;::::1;::::0;::::1;::::0;;;22513:3124:::1;;;23053:27;23040:9;:40;;;;;;;;;23035:2602;;;23108:71;23122:23;23147:20;23169:8;23108:12;:71::i;:::-;23103:358;;;23201:19;:36:::0;;::::1;::::0;::::1;::::0;;;::::1;::::0;;-1:-1:-1;;;;;;23201:36:0::1;-1:-1:-1::0;;;;;23201:36:0;::::1;::::0;;::::1;::::0;;;-1:-1:-1;23256:35:0;;;:23:::1;23201:36;23256:35:::0;;;;:39;;-1:-1:-1;;23256:39:0::1;::::0;;23319:45:::1;::::0;23201:36;23319:12:::1;:45::i;:::-;23314:132;;23390:19;:36:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;23390:36:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;23390:36:0::1;-1:-1:-1::0;;;;;23390:36:0;::::1;;::::0;;23314:132:::1;-1:-1:-1::0;;;;;;23485:32:0;::::1;;::::0;;;:20:::1;:32;::::0;;;;;;::::1;::::0;::::1;23484:33;-1:-1:-1::0;;23532:41:0;;::::1;::::0;::::1;::::0;;;23035:2602:::1;;;23611:23;23598:9;:36;;;;;;;;;23593:2044;;;23662:63;23676:19;23697:16;23715:8;23662:12;:63::i;:::-;23657:283;;;-1:-1:-1::0;;;;;23747:31:0;::::1;23781:1;23747:31:::0;;;:19:::1;:31;::::0;;;;:35;;-1:-1:-1;;23747:35:0::1;::::0;;23806:41:::1;23820:15;23768:8:::0;23806:12:::1;:41::i;:::-;23801:124;;23873:15;:32:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;23873:32:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;23873:32:0::1;-1:-1:-1::0;;;;;23873:32:0;::::1;;::::0;;23801:124:::1;-1:-1:-1::0;;;;;;23964:28:0;;::::1;;::::0;;;:16:::1;:28;::::0;;;;;;;;;::::1;::::0;::::1;23963:29;-1:-1:-1::0;;24007:37:0;;::::1;::::0;::::1;::::0;;;24059:14:::1;:26:::0;;;;;;:40;;-1:-1:-1;;;;;;24059:40:0::1;::::0;;::::1;::::0;;;::::1;::::0;;;23593:2044:::1;;;24137:25;24124:9;:38;;;;;;;;;24119:1518;;;24190:67;24204:21;24227:18;24247:8;24190:12;:67::i;:::-;24185:293;;;-1:-1:-1::0;;;;;24279:33:0;::::1;24315:1;24279:33:::0;;;:21:::1;:33;::::0;;;;:37;;-1:-1:-1;;24279:37:0::1;::::0;;24340:43:::1;24354:17;24302:8:::0;24340:12:::1;:43::i;:::-;24335:128;;24409:17;:34:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;24409:34:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;24409:34:0::1;-1:-1:-1::0;;;;;24409:34:0;::::1;;::::0;;24335:128:::1;-1:-1:-1::0;;;;;;24502:30:0;::::1;;::::0;;;:18:::1;:30;::::0;;;;;;::::1;::::0;::::1;24501:31;-1:-1:-1::0;;24547:39:0;;::::1;::::0;::::1;::::0;;;24119:1518:::1;;;24624:15;24611:9;:28;;;;;;;;;24606:1031;;;24667:47;24681:11;24694:8;24704;24667:12;:47::i;:::-;24662:243;;;-1:-1:-1::0;;;;;24736:23:0;::::1;24762:1;24736:23:::0;;;:11:::1;:23;::::0;;;;:27;;-1:-1:-1;;24736:27:0::1;::::0;;24787:33:::1;24801:7;24749:8:::0;24787:12:::1;:33::i;:::-;24782:108;;24846:7;:24:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;24846:24:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;24846:24:0::1;-1:-1:-1::0;;;;;24846:24:0;::::1;;::::0;;24782:108:::1;-1:-1:-1::0;;;;;;24929:20:0;::::1;;::::0;;;:8:::1;:20;::::0;;;;;;::::1;::::0;::::1;24928:21;-1:-1:-1::0;;24964:29:0;;::::1;::::0;::::1;::::0;;;24606:1031:::1;;;25031:22;25018:9;:35;;;;;;;;;25013:624;;;25081:61;25095:18;25115:15;25132:8;25081:12;:61::i;:::-;25076:278;;;-1:-1:-1::0;;;;;25164:30:0;::::1;25197:1;25164:30:::0;;;:18:::1;:30;::::0;;;;:34;;-1:-1:-1;;25164:34:0::1;::::0;;25222:40:::1;25236:14;25184:8:::0;25222:12:::1;:40::i;:::-;25217:122;;25288:14;:31:::0;;::::1;::::0;::::1;::::0;;-1:-1:-1;25288:31:0;;;;;::::1;::::0;;-1:-1:-1;;;;;;25288:31:0::1;-1:-1:-1::0;;;;;25288:31:0;::::1;;::::0;;25217:122:::1;-1:-1:-1::0;;;;;;25378:27:0;::::1;;::::0;;;:15:::1;:27;::::0;;;;;;::::1;::::0;::::1;25377:28;-1:-1:-1::0;;25420:36:0;;::::1;::::0;::::1;::::0;;;25013:624:::1;;;25494:13;25481:9;:26;;;;;;;;;25476:161;;;-1:-1:-1::0;25542:1:0::1;25530:9;:13:::0;25558:8:::1;:19:::0;;-1:-1:-1;;;;;;25558:19:0::1;-1:-1:-1::0;;;;;25558:19:0;::::1;;::::0;;-1:-1:-1;25476:161:0::1;;;25632:5;25625:12;;;;;25476:161;25672:9;25655:46;;;;;;;;;::::0;;-1:-1:-1;;;;;25655:46:0;::::1;::::0;;;::::1;;;::::0;::::1;::::0;;;::::1;::::0;;;;;;;;;::::1;25719:4;25712:11;;;4687:1;20859:4872:::0;;;;;:::o;11074:21::-;;;;:::o;9310:32::-;;;;;;;;;;;;9698:59;;;;;;;;;;;;;;;:::o;475:136::-;533:7;560:43;564:1;567;560:43;;;;;;;;;;;;;;;;;:3;:43::i;6122:177::-;6232:58;;;-1:-1:-1;;;;;6232:58:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;6232:58:0;;;6205:86;;6225:5;;6205:19;:86::i;:::-;6122:177;;;:::o;99:181::-;157:7;189:5;;;213:6;;;;205:46;;;;;-1:-1:-1;;;205:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;819:250;877:7;901:6;897:47;;-1:-1:-1;931:1:0;924:8;;897:47;968:5;;;972:1;968;:5;:1;992:5;;;;;:10;984:56;;;;-1:-1:-1;;;984:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1333:132;1391:7;1418:39;1422:1;1425;1418:39;;;;;;;;;;;;;;;;;:3;:39::i;6307:205::-;6435:68;;;-1:-1:-1;;;;;6435:68:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;6458:27;6435:68;;;6408:96;;6428:5;;6408:19;:96::i;:::-;6307:205;;;;:::o;288:179::-;346:6;376:5;;;400:6;;;;;;;;;392:46;;;;;-1:-1:-1;;;392:46:0;;;;;;;;;;;;;;;;;;;;;;;;;;;1077:248;1135:6;1158;;;1154:47;;-1:-1:-1;1188:1:0;1181:8;;1154:47;1224:5;;;1248:10;;;;;:5;;;;;;;;;;;;:10;;;1240:56;;;;-1:-1:-1;;;1240:56:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;25979:451;-1:-1:-1;;;;;26194:19:0;;26170:4;26194:19;;;;;;;;;;;;;26188:221;;-1:-1:-1;;;;;26240:18:0;;;;;;;;;;;;;;;;26231:48;;;;;-1:-1:-1;;;26231:48:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26303:18:0;;;;;;;;;;;;;;:45;26332:15;26303:45;;:18;;:45;;26294:77;;;;;-1:-1:-1;;;26294:77:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;26393:4:0;26386:11;;26188:221;-1:-1:-1;26417:5:0;25979:451;;;;;:::o;26599:277::-;26688:4;;26706:140;26727:12;;26723:16;;26706:140;;;26780:6;-1:-1:-1;;;;;26766:20:0;:5;26773:1;26766:10;;;;;;;;;;;;;;;;;;-1:-1:-1;;;;;26766:10:0;:20;26762:73;;;26815:4;26808:11;;;;;26762:73;26741:3;;26706:140;;619:192;705:7;741:12;733:6;;;;725:29;;;;-1:-1:-1;;;725:29:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;;777:5:0;;;619:192::o;6520:418::-;6601:23;6627:69;6655:4;6627:69;;;;;;;;;;;;;;;;;6635:5;-1:-1:-1;;;;;6627:27:0;;;:69;;;;;:::i;:::-;6711:17;;6601:95;;-1:-1:-1;6711:21:0;6707:224;;6853:10;6842:30;;;;;;;;;;;;;;;-1:-1:-1;6842:30:0;6834:85;;;;-1:-1:-1;;;6834:85:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1473:189;1559:7;1594:12;1587:5;1579:28;;;;-1:-1:-1;;;1579:28:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1618:9;1634:1;1630;:5;;;;;;;1473:189;-1:-1:-1;;;;;1473:189:0:o;2122:232::-;2261:12;2293:53;2316:6;2324:4;2330:1;2333:12;2293:22;:53::i;:::-;2286:60;2122:232;-1:-1:-1;;;;2122:232:0:o;2362:863::-;2538:12;2571:18;2582:6;2571:10;:18::i;:::-;2563:60;;;;;-1:-1:-1;;;2563:60:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;2697:12;2711:23;2738:6;-1:-1:-1;;;;;2738:11:0;2758:8;2769:4;2738:36;;;;;;;;;;;;;;;;;;;;;;;-1:-1:-1;;2738:36:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;2696:78;;;;2789:7;2785:433;;;2820:10;-1:-1:-1;2813:17:0;;-1:-1:-1;2813:17:0;2785:433;2867:17;;:21;2863:344;;3035:10;3029:17;3096:15;3083:10;3079:2;3075:19;3068:44;2983:148;3171:20;;-1:-1:-1;;;3171:20:0;;;;;;;;;;;;;;;;;3178:12;;3171:20;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;1692:422;2059:20;2098:8;;;1692:422::o

Swarm Source

ipfs://431ee5775ec5a18026a34d8da41a2f0cb958b40da6dad92ff063830edb48358b
Block Transaction Gas Used Reward
Age Block Fee Address BC Fee Address Voting Power Jailed Incoming
Block Uncle Number Difficulty Gas Used Reward
Loading
Make sure to use the "Vote Down" button for any spammy posts, and the "Vote Up" for interesting conversations.