FRAX Price: $0.80 (-2.49%)

Contract

0x69a05b6Ccb46d19Cb26359864d98EDcb12CaAc55

Overview

FRAX Balance | FXTL Balance

0.000000002513835439 FRAX | 158 FXTL

FRAX Value

Less Than $0.01 (@ $0.80/FRAX)

Token Holdings

More Info

Private Name Tags

Multichain Info

No addresses found
Age:30D
Reset Filter

Transaction Hash
Block
From
To

There are no matching entries

2 Internal Transactions and 2 Token Transfers found.

Latest 2 internal transactions

Advanced mode:
Parent Transaction Hash Block From To
264698632025-10-06 11:33:57113 days ago1759750437
0x69a05b6C...b12CaAc55
0 FRAX
264294292025-10-05 13:06:09114 days ago1759669569
0x69a05b6C...b12CaAc55
0 FRAX

Cross-Chain Transactions
Loading...
Loading

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

Contract Name:
BatchSenderImplementation

Compiler Version
v0.8.28+commit.7893614a

Optimization Enabled:
No with 200 runs

Other Settings:
paris EvmVersion

Contract Source Code (Solidity Standard Json-Input format)

// SPDX-License-Identifier: MIT
pragma solidity ^0.8.0;

/**
 * @title BatchSenderImplementation
 * @dev Implementation contract for sending ETH or ERC20 tokens to multiple recipients
 */

interface IERC20 {
    function totalSupply() external view returns (uint256);
    function balanceOf(address account) external view returns (uint256);
    function transfer(address recipient, uint256 amount) external returns (bool);
    function allowance(address owner, address spender) external view returns (uint256);
    function transferFrom(address sender, address recipient, uint256 amount) external returns (bool);
    function approve(address spender, uint256 amount) external returns (bool);
    
    event Transfer(address indexed from, address indexed to, uint256 value);
    event Approval(address indexed owner, address indexed spender, uint256 value);
}

contract BatchSenderImplementation {
    // Storage variables
    mapping(address => uint256) public txCount;
    address public owner;
    address public pendingOwner;
    uint16 public arrayLimit;
    uint256 public discountStep;
    uint256 public maxDiscount;
    uint256 public fee;
    uint16 public batchFeesLimit;
    bool public paused;
    bool public feeEnabled;
    uint256 private _nonReentrantStatus;
    
    // Events
    event OwnershipTransferInitiated(address indexed currentOwner, address indexed pendingOwner);
    event OwnershipTransferred(address indexed previousOwner, address indexed newOwner);
    event Sent(uint256 total, address tokenAddress);
    event ClaimedTokens(address token, address owner, uint256 balance);
    event FeeEnabledChanged(bool enabled);
    event PausedStatusChanged(bool paused);
    event Initialized(address initialOwner);
    
    // Modifiers
    modifier onlyOwner() {
        require(msg.sender == owner, "BatchSender: caller is not the owner");
        _;
    }
    
    modifier hasFee() {
        if (feeEnabled) {
            require(msg.value >= fee - discountRate(msg.sender), "BatchSender: insufficient fee");
        }
        _;
    }
    
    modifier whenNotPaused() {
        require(!paused, "BatchSender: contract is paused");
        _;
    }
    
    modifier nonReentrant() {
        // Check for reentrancy
        uint256 _status = _getNonReentrantStatus();
        require(_status != 2, "BatchSender: reentrant call");
        
        // Set status to executing
        _setNonReentrantStatus(2);
        
        _;
        
        // Set status back to not executing
        _setNonReentrantStatus(1);
    }
    
    // Simple reentrancy protection
    function _getNonReentrantStatus() private view returns (uint256) {
        return _nonReentrantStatus;
    }
    
    function _setNonReentrantStatus(uint256 status) private {
        _nonReentrantStatus = status;
    }
    
    // Replace constructor with initialize function for proxy pattern
    function initialize(address _initialOwner) public {
        require(owner == address(0), "BatchSender: already initialized");
        
        owner = _initialOwner;
        arrayLimit = 150;
        discountStep = 0.00005 ether;
        maxDiscount = 0.04 ether;
        fee = 0.05 ether;
        batchFeesLimit = 20;
        paused = false;
        feeEnabled = false;
        _nonReentrantStatus = 1;
        
        emit Initialized(_initialOwner);
    }
    
    function discountRate(address _customer) public view returns(uint256) {
        uint256 count = txCount[_customer];
        uint256 discount = count * discountStep;
        
        // Cap maximum discount
        if (discount > maxDiscount) {
            return maxDiscount;
        }
        return discount;
    }
    
    function currentFee(address _customer) public view returns(uint256) {
        if (!feeEnabled) {
            return 0;
        }
        return fee - discountRate(_customer);
    }

    function batchFees(address[] calldata _accounts) public view returns (uint256[] memory) {
        require(_accounts.length <= batchFeesLimit, "BatchSender: exceeds maximum accounts limit");
        
        uint256[] memory fees = new uint256[](_accounts.length);
        
        for (uint256 i = 0; i < _accounts.length; i++) {
            fees[i] = currentFee(_accounts[i]);
        }
        
        return fees;
    }

    /**
    * @dev Gets native balances, token data, and transaction fees in a single call
    * @param _tokens Array of token addresses to check
    * @param _accounts Array of addresses to check balances for
    * @return nativeBalances Array of native currency balances for each account
    * @return tokenBalances 2D array of token balances [tokenIndex][accountIndex]
    * @return tokenAllowances 2D array of allowances [tokenIndex][accountIndex]
    * @return fees Array of transaction fees for each account
    */
    function batchDataCheck(
        address[] calldata _tokens,
        address[] calldata _accounts
    ) external view returns (
        uint256[] memory nativeBalances,
        uint256[][] memory tokenBalances,
        uint256[][] memory tokenAllowances,
        uint256[] memory fees
    ) {
        require(_accounts.length <= arrayLimit, "BatchSender: exceeds account limit");
        require(_tokens.length <= arrayLimit, "BatchSender: exceeds token limit");
        
        // Get native balances
        nativeBalances = new uint256[](_accounts.length);
        
        // Get fees for each account
        fees = new uint256[](_accounts.length);
        
        for (uint256 i = 0; i < _accounts.length; i++) {
            nativeBalances[i] = _accounts[i].balance;
            fees[i] = currentFee(_accounts[i]);
        }
        
        // Initialize token data arrays
        tokenBalances = new uint256[][](_tokens.length);
        tokenAllowances = new uint256[][](_tokens.length);
        
        // For each token
        for (uint256 i = 0; i < _tokens.length; i++) {
            IERC20 token = IERC20(_tokens[i]);
            
            // Create arrays for this token
            tokenBalances[i] = new uint256[](_accounts.length);
            tokenAllowances[i] = new uint256[](_accounts.length);
            
            // For each account
            for (uint256 j = 0; j < _accounts.length; j++) {
                // Get balance and allowance
                tokenBalances[i][j] = token.balanceOf(_accounts[j]);
                tokenAllowances[i][j] = token.allowance(_accounts[j], address(this));
            }
        }
        
        return (nativeBalances, tokenBalances, tokenAllowances, fees);
    }

    function changeBatchFeesLimit(uint16 _newLimit) public onlyOwner {
        require(_newLimit > 0, "BatchSender: batch fees limit cannot be zero");
        require(_newLimit <= 100, "BatchSender: batch fees limit too large");
        batchFeesLimit = _newLimit;
    }

    function transferOwnership(address _pendingOwner) public onlyOwner {
        require(_pendingOwner != address(0), "BatchSender: new owner is the zero address");
        pendingOwner = _pendingOwner;
        emit OwnershipTransferInitiated(owner, pendingOwner);
    }
    
    function claimOwnership() public {
        require(msg.sender == pendingOwner, "BatchSender: caller is not the pending owner");
        address previousOwner = owner;
        owner = pendingOwner;
        pendingOwner = address(0);
        emit OwnershipTransferred(previousOwner, owner);
    }
    
    function changeArrayLimit(uint16 _newLimit) public onlyOwner {
        require(_newLimit > 0, "BatchSender: array limit cannot be zero");
        require(_newLimit <= 500, "BatchSender: array limit too large");
        arrayLimit = _newLimit;
    }
    
    function changeFee(uint256 _newFee) public onlyOwner {
        require(_newFee > 0, "BatchSender: fee cannot be zero");
        fee = _newFee;
    }
    
    function changeDiscountStep(uint256 _newStep) public onlyOwner {
        discountStep = _newStep;
    }
    
    function changeMaxDiscount(uint256 _newMaxDiscount) public onlyOwner {
        require(_newMaxDiscount < fee, "BatchSender: max discount cannot exceed fee");
        maxDiscount = _newMaxDiscount;
    }
    
    function setFeeEnabled(bool _enabled) public onlyOwner {
        feeEnabled = _enabled;
        emit FeeEnabledChanged(_enabled);
    }
    
    function setPaused(bool _paused) public onlyOwner {
        paused = _paused;
        emit PausedStatusChanged(_paused);
    }
    
    function multisendToken(
        address token, 
        address[] calldata _recipients, 
        uint256[] calldata _amounts
    ) public hasFee payable whenNotPaused nonReentrant {
        require(_recipients.length == _amounts.length, "BatchSender: recipients and amounts length mismatch");
        require(_recipients.length <= arrayLimit, "BatchSender: exceeds array limit");
        require(_recipients.length > 0, "BatchSender: empty recipients array");
        
        IERC20 erc20token = IERC20(token);
        uint256 total = 0;
        
        // Check allowance and balance before starting transfers
        uint256 allowanceSum = 0;
        for (uint256 i = 0; i < _amounts.length; i++) {
            allowanceSum += _amounts[i];
        }
        require(erc20token.allowance(msg.sender, address(this)) >= allowanceSum, "BatchSender: insufficient token allowance");
        require(erc20token.balanceOf(msg.sender) >= allowanceSum, "BatchSender: insufficient token balance");
        
        for (uint256 i = 0; i < _recipients.length;) {
            require(_recipients[i] != address(0), "BatchSender: recipient cannot be zero address");
            bool success = erc20token.transferFrom(msg.sender, _recipients[i], _amounts[i]);
            require(success, "BatchSender: token transfer failed");
            total += _amounts[i];
            
            unchecked { i++; } // Gas optimization
        }
        
        txCount[msg.sender]++;
        emit Sent(total, token);
    }
    
    function multisendEther(
        address[] calldata _recipients, 
        uint256[] calldata _amounts
    ) public hasFee payable whenNotPaused nonReentrant {
        require(_recipients.length == _amounts.length, "BatchSender: recipients and amounts length mismatch");
        require(_recipients.length <= arrayLimit, "BatchSender: exceeds array limit");
        require(_recipients.length > 0, "BatchSender: empty recipients array");
        
        uint256 total = 0;
        
        // Calculate total to send
        for (uint256 i = 0; i < _recipients.length;) {
            require(_recipients[i] != address(0), "BatchSender: recipient cannot be zero address");
            total += _amounts[i];
            unchecked { i++; } // Gas optimization
        }
        
        // Ensure enough ETH was sent
        uint256 requiredAmount = total + currentFee(msg.sender);
        require(msg.value >= requiredAmount, "BatchSender: insufficient ETH sent");
        
        // Process transfers - use new variable to avoid reentrancy risks
        for (uint256 i = 0; i < _recipients.length;) {
            (bool success, ) = _recipients[i].call{value: _amounts[i]}("");
            require(success, "BatchSender: ETH transfer failed");
            unchecked { i++; } // Gas optimization
        }
        
        // Refund excess ETH
        uint256 excess = msg.value - requiredAmount;
        if (excess > 0) {
            (bool success, ) = msg.sender.call{value: excess}("");
            require(success, "BatchSender: refund failed");
        }
        
        txCount[msg.sender]++;
        emit Sent(total, address(0));
    }
    
    function claimTokens(address _token) public onlyOwner {
        if (_token == address(0)) {
            (bool success, ) = owner.call{value: address(this).balance}("");
            require(success, "BatchSender: ETH transfer failed");
            return;
        }
        
        IERC20 erc20token = IERC20(_token);
        uint256 balance = erc20token.balanceOf(address(this));
        require(erc20token.transfer(owner, balance), "BatchSender: token transfer failed");
        emit ClaimedTokens(_token, owner, balance);
    }
    
    // Function to rescue tokens mistakenly sent to contract
    function rescueERC20(address token, address recipient, uint256 amount) external onlyOwner {
        IERC20 erc20token = IERC20(token);
        require(recipient != address(0), "BatchSender: cannot rescue to zero address");
        require(erc20token.transfer(recipient, amount), "BatchSender: token rescue failed");
    }
    
    // Function needed to receive ETH
    receive() external payable {}
}

Settings
{
  "evmVersion": "paris",
  "optimizer": {
    "enabled": false,
    "runs": 200
  },
  "outputSelection": {
    "*": {
      "*": [
        "evm.bytecode",
        "evm.deployedBytecode",
        "devdoc",
        "userdoc",
        "metadata",
        "abi"
      ]
    }
  },
  "libraries": {}
}

Contract Security Audit

Contract ABI

API
[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"token","type":"address"},{"indexed":false,"internalType":"address","name":"owner","type":"address"},{"indexed":false,"internalType":"uint256","name":"balance","type":"uint256"}],"name":"ClaimedTokens","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"enabled","type":"bool"}],"name":"FeeEnabledChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"initialOwner","type":"address"}],"name":"Initialized","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"currentOwner","type":"address"},{"indexed":true,"internalType":"address","name":"pendingOwner","type":"address"}],"name":"OwnershipTransferInitiated","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"previousOwner","type":"address"},{"indexed":true,"internalType":"address","name":"newOwner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"bool","name":"paused","type":"bool"}],"name":"PausedStatusChanged","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"total","type":"uint256"},{"indexed":false,"internalType":"address","name":"tokenAddress","type":"address"}],"name":"Sent","type":"event"},{"inputs":[],"name":"arrayLimit","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_tokens","type":"address[]"},{"internalType":"address[]","name":"_accounts","type":"address[]"}],"name":"batchDataCheck","outputs":[{"internalType":"uint256[]","name":"nativeBalances","type":"uint256[]"},{"internalType":"uint256[][]","name":"tokenBalances","type":"uint256[][]"},{"internalType":"uint256[][]","name":"tokenAllowances","type":"uint256[][]"},{"internalType":"uint256[]","name":"fees","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_accounts","type":"address[]"}],"name":"batchFees","outputs":[{"internalType":"uint256[]","name":"","type":"uint256[]"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"batchFeesLimit","outputs":[{"internalType":"uint16","name":"","type":"uint16"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint16","name":"_newLimit","type":"uint16"}],"name":"changeArrayLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint16","name":"_newLimit","type":"uint16"}],"name":"changeBatchFeesLimit","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newStep","type":"uint256"}],"name":"changeDiscountStep","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newFee","type":"uint256"}],"name":"changeFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_newMaxDiscount","type":"uint256"}],"name":"changeMaxDiscount","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"claimOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"claimTokens","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_customer","type":"address"}],"name":"currentFee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_customer","type":"address"}],"name":"discountRate","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"discountStep","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"fee","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"feeEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"_initialOwner","type":"address"}],"name":"initialize","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"maxDiscount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address[]","name":"_recipients","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"multisendEther","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address[]","name":"_recipients","type":"address[]"},{"internalType":"uint256[]","name":"_amounts","type":"uint256[]"}],"name":"multisendToken","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"owner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"paused","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"pendingOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"token","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"rescueERC20","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_enabled","type":"bool"}],"name":"setFeeEnabled","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"bool","name":"_paused","type":"bool"}],"name":"setPaused","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_pendingOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"txCount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"stateMutability":"payable","type":"receive"}]

0x6080604052348015600f57600080fd5b5061459f8061001f6000396000f3fe6080604052600436106101bb5760003560e01c8063a771ebc7116100ec578063c5f4c98b1161008a578063e30c397811610064578063e30c3978146105d4578063e4e1f29b146105ff578063eff8e7481461062a578063f2fde38b14610667576101c2565b8063c5f4c98b14610557578063ddca3f4314610580578063df8de3e7146105ab576101c2565b8063b4ae641c116100c6578063b4ae641c1461049b578063b8b89e1b146104c6578063c1258f69146104f1578063c4d66de81461052e576101c2565b8063a771ebc71461042b578063ab883d2814610456578063b2118a8d14610472576101c2565b80633a01e6ab116101595780635c975abb116101335780635c975abb146103835780636a1db1bf146103ae5780638da5cb5b146103d757806394df2f4814610402576101c2565b80633a01e6ab146103045780634e71e0c81461032f578063591552da14610346576101c2565b806316c38b3c1161019557806316c38b3c146102355780632bf351581461025e5780632dec79331461029e578063377dcd97146102c7576101c2565b8063079cccf2146101c75780630b66f3f5146101f05780630db474fa1461020c576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101ee60048036038101906101e99190612c51565b610690565b005b61020a60048036038101906102059190612d97565b61076e565b005b34801561021857600080fd5b50610233600480360381019061022e9190612e64565b610db2565b005b34801561024157600080fd5b5061025c60048036038101906102579190612e64565b610e96565b005b34801561026a57600080fd5b5061028560048036038101906102809190612e91565b610f7a565b6040516102959493929190613101565b60405180910390f35b3480156102aa57600080fd5b506102c560048036038101906102c0919061319c565b611539565b005b3480156102d357600080fd5b506102ee60048036038101906102e991906131c9565b611679565b6040516102fb9190613216565b60405180910390f35b34801561031057600080fd5b5061031961179a565b6040516103269190613247565b60405180910390f35b34801561033b57600080fd5b506103446117ae565b005b34801561035257600080fd5b5061036d60048036038101906103689190613262565b611989565b60405161037a919061329e565b60405180910390f35b34801561038f57600080fd5b506103986119c6565b6040516103a591906132c8565b60405180910390f35b3480156103ba57600080fd5b506103d560048036038101906103d09190612c51565b6119d9565b005b3480156103e357600080fd5b506103ec611ab6565b6040516103f991906132f2565b60405180910390f35b34801561040e57600080fd5b506104296004803603810190610424919061319c565b611adc565b005b34801561043757600080fd5b50610440611c1b565b60405161044d91906132c8565b60405180910390f35b610470600480360381019061046b919061330d565b611c2e565b005b34801561047e57600080fd5b506104996004803603810190610494919061338e565b6121d4565b005b3480156104a757600080fd5b506104b061239b565b6040516104bd9190613247565b60405180910390f35b3480156104d257600080fd5b506104db6123af565b6040516104e8919061329e565b60405180910390f35b3480156104fd57600080fd5b5061051860048036038101906105139190613262565b6123b5565b604051610525919061329e565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190613262565b6123cd565b005b34801561056357600080fd5b5061057e60048036038101906105799190612c51565b61257c565b005b34801561058c57600080fd5b50610595612616565b6040516105a2919061329e565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190613262565b61261c565b005b3480156105e057600080fd5b506105e9612979565b6040516105f691906132f2565b60405180910390f35b34801561060b57600080fd5b5061061461299f565b604051610621919061329e565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c9190613262565b6129a5565b60405161065e919061329e565b60405180910390f35b34801561067357600080fd5b5061068e60048036038101906106899190613262565b612a1c565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613464565b60405180910390fd5b6005548110610764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075b906134f6565b60405180910390fd5b8060048190555050565b600660039054906101000a900460ff16156107dc5761078c336129a5565b6005546107999190613545565b3410156107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d2906135c5565b60405180910390fd5b5b600660029054906101000a900460ff161561082c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082390613631565b60405180910390fd5b6000610836612bfd565b90506002810361087b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108729061369d565b60405180910390fd5b6108856002612c07565b8282905085859050146108cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061372f565b60405180910390fd5b600260149054906101000a900461ffff1661ffff16858590501115610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091e9061379b565b60405180910390fd5b6000858590501161096d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109649061382d565b60405180910390fd5b600086905060008060005b868690508110156109b7578686828181106109965761099561384d565b5b90506020020135826109a8919061387c565b91508080600101915050610978565b50808373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016109f49291906138b0565b602060405180830381865afa158015610a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3591906138ee565b1015610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d9061398d565b60405180910390fd5b808373ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610ab091906132f2565b602060405180830381865afa158015610acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af191906138ee565b1015610b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2990613a1f565b60405180910390fd5b60005b88889050811015610d0f57600073ffffffffffffffffffffffffffffffffffffffff16898983818110610b6b57610b6a61384d565b5b9050602002016020810190610b809190613262565b73ffffffffffffffffffffffffffffffffffffffff1603610bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcd90613ab1565b60405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff166323b872dd338c8c86818110610c0857610c0761384d565b5b9050602002016020810190610c1d9190613262565b8b8b87818110610c3057610c2f61384d565b5b905060200201356040518463ffffffff1660e01b8152600401610c5593929190613ad1565b6020604051808303816000875af1158015610c74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c989190613b1d565b905080610cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd190613bbc565b60405180910390fd5b878783818110610ced57610cec61384d565b5b9050602002013584610cff919061387c565b9350818060010192505050610b35565b506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610d5f90613bdc565b91905055507fce0f36b64910d314caed8f8461c289a41c154bc8310f16ac58dd956daae3ebf6828a604051610d95929190613c24565b60405180910390a1505050610daa6001612c07565b505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3990613464565b60405180910390fd5b80600660036101000a81548160ff0219169083151502179055507fcd861584328fc8fda4f81b958b2d5d32352d6394dc689f6246a7411e4b71dac781604051610e8b91906132c8565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d90613464565b60405180910390fd5b80600660026101000a81548160ff0219169083151502179055507f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c581604051610f6f91906132c8565b60405180910390a150565b606080606080600260149054906101000a900461ffff1661ffff16868690501115610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd190613cbf565b60405180910390fd5b600260149054906101000a900461ffff1661ffff16888890501115611034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102b90613d2b565b60405180910390fd5b8585905067ffffffffffffffff81111561105157611050613d4b565b5b60405190808252806020026020018201604052801561107f5781602001602082028036833780820191505090505b5093508585905067ffffffffffffffff81111561109f5761109e613d4b565b5b6040519080825280602002602001820160405280156110cd5781602001602082028036833780820191505090505b50905060005b86869050811015611198578686828181106110f1576110f061384d565b5b90506020020160208101906111069190613262565b73ffffffffffffffffffffffffffffffffffffffff16318582815181106111305761112f61384d565b5b60200260200101818152505061116c8787838181106111525761115161384d565b5b90506020020160208101906111679190613262565b611989565b82828151811061117f5761117e61384d565b5b60200260200101818152505080806001019150506110d3565b508787905067ffffffffffffffff8111156111b6576111b5613d4b565b5b6040519080825280602002602001820160405280156111e957816020015b60608152602001906001900390816111d45790505b5092508787905067ffffffffffffffff81111561120957611208613d4b565b5b60405190808252806020026020018201604052801561123c57816020015b60608152602001906001900390816112275790505b50915060005b8888905081101561152d5760008989838181106112625761126161384d565b5b90506020020160208101906112779190613262565b90508787905067ffffffffffffffff81111561129657611295613d4b565b5b6040519080825280602002602001820160405280156112c45781602001602082028036833780820191505090505b508583815181106112d8576112d761384d565b5b60200260200101819052508787905067ffffffffffffffff811115611300576112ff613d4b565b5b60405190808252806020026020018201604052801561132e5781602001602082028036833780820191505090505b508483815181106113425761134161384d565b5b602002602001018190525060005b8888905081101561151e578173ffffffffffffffffffffffffffffffffffffffff166370a082318a8a8481811061138a5761138961384d565b5b905060200201602081019061139f9190613262565b6040518263ffffffff1660e01b81526004016113bb91906132f2565b602060405180830381865afa1580156113d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fc91906138ee565b86848151811061140f5761140e61384d565b5b602002602001015182815181106114295761142861384d565b5b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e8a8a848181106114645761146361384d565b5b90506020020160208101906114799190613262565b306040518363ffffffff1660e01b81526004016114979291906138b0565b602060405180830381865afa1580156114b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d891906138ee565b8584815181106114eb576114ea61384d565b5b602002602001015182815181106115055761150461384d565b5b6020026020010181815250508080600101915050611350565b50508080600101915050611242565b50945094509450949050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c090613464565b60405180910390fd5b60008161ffff1611611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790613dec565b60405180910390fd5b6101f48161ffff161115611659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165090613e7e565b60405180910390fd5b80600260146101000a81548161ffff021916908361ffff16021790555050565b6060600660009054906101000a900461ffff1661ffff168383905011156116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc90613f10565b60405180910390fd5b60008383905067ffffffffffffffff8111156116f4576116f3613d4b565b5b6040519080825280602002602001820160405280156117225781602001602082028036833780820191505090505b50905060005b8484905081101561178f576117638585838181106117495761174861384d565b5b905060200201602081019061175e9190613262565b611989565b8282815181106117765761177561384d565b5b6020026020010181815250508080600101915050611728565b508091505092915050565b600660009054906101000a900461ffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461183e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183590613fa2565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660039054906101000a900460ff166119a857600090506119c1565b6119b1826129a5565b6005546119be9190613545565b90505b919050565b600660029054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6090613464565b60405180910390fd5b60008111611aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa39061400e565b60405180910390fd5b8060058190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6390613464565b60405180910390fd5b60008161ffff1611611bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baa906140a0565b60405180910390fd5b60648161ffff161115611bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf290614132565b60405180910390fd5b80600660006101000a81548161ffff021916908361ffff16021790555050565b600660039054906101000a900460ff1681565b600660039054906101000a900460ff1615611c9c57611c4c336129a5565b600554611c599190613545565b341015611c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c92906135c5565b60405180910390fd5b5b600660029054906101000a900460ff1615611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce390613631565b60405180910390fd5b6000611cf6612bfd565b905060028103611d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d329061369d565b60405180910390fd5b611d456002612c07565b828290508585905014611d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d849061372f565b60405180910390fd5b600260149054906101000a900461ffff1661ffff16858590501115611de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dde9061379b565b60405180910390fd5b60008585905011611e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e249061382d565b60405180910390fd5b6000805b86869050811015611f0657600073ffffffffffffffffffffffffffffffffffffffff16878783818110611e6757611e6661384d565b5b9050602002016020810190611e7c9190613262565b73ffffffffffffffffffffffffffffffffffffffff1603611ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec990613ab1565b60405180910390fd5b848482818110611ee557611ee461384d565b5b9050602002013582611ef7919061387c565b91508080600101915050611e31565b506000611f1233611989565b82611f1d919061387c565b905080341015611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f59906141c4565b60405180910390fd5b60005b8787905081101561206a576000888883818110611f8557611f8461384d565b5b9050602002016020810190611f9a9190613262565b73ffffffffffffffffffffffffffffffffffffffff16878784818110611fc357611fc261384d565b5b90506020020135604051611fd690614215565b60006040518083038185875af1925050503d8060008114612013576040519150601f19603f3d011682016040523d82523d6000602084013e612018565b606091505b505090508061205c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205390614276565b60405180910390fd5b818060010192505050611f65565b50600081346120799190613545565b905060008111156121325760003373ffffffffffffffffffffffffffffffffffffffff16826040516120aa90614215565b60006040518083038185875af1925050503d80600081146120e7576040519150601f19603f3d011682016040523d82523d6000602084013e6120ec565b606091505b5050905080612130576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612127906142e2565b60405180910390fd5b505b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061218190613bdc565b91905055507fce0f36b64910d314caed8f8461c289a41c154bc8310f16ac58dd956daae3ebf68360006040516121b8929190613c24565b60405180910390a15050506121cd6001612c07565b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225b90613464565b60405180910390fd5b6000839050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cf90614374565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401612313929190614394565b6020604051808303816000875af1158015612332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123569190613b1d565b612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c90614409565b60405180910390fd5b50505050565b600260149054906101000a900461ffff1681565b60045481565b60006020528060005260406000206000915090505481565b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461245e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245590614475565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506096600260146101000a81548161ffff021916908361ffff160217905550652d79883d2000600381905550668e1bc9bf04000060048190555066b1a2bc2ec500006005819055506014600660006101000a81548161ffff021916908361ffff1602179055506000600660026101000a81548160ff0219169083151502179055506000600660036101000a81548160ff02191690831515021790555060016007819055507f908408e307fc569b417f6cbec5d5a06f44a0a505ac0479b47d421a4b2fd6a1e68160405161257191906132f2565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461260c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260390613464565b60405180910390fd5b8060038190555050565b60055481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a390613464565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127b4576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161272890614215565b60006040518083038185875af1925050503d8060008114612765576040519150601f19603f3d011682016040523d82523d6000602084013e61276a565b606091505b50509050806127ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a590614276565b60405180910390fd5b50612976565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127f491906132f2565b602060405180830381865afa158015612811573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283591906138ee565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401612894929190614394565b6020604051808303816000875af11580156128b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d79190613b1d565b612916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290d90613bbc565b60405180910390fd5b7ff931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360405161296b93929190613ad1565b60405180910390a150505b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600354826129f99190614495565b9050600454811115612a115760045492505050612a17565b80925050505b919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa390613464565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1290614549565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb150023a879fd806e3599b6ca8ee3b60f0e360ab3846d128d67ebce1a391639a60405160405180910390a350565b6000600754905090565b8060078190555050565b600080fd5b600080fd5b6000819050919050565b612c2e81612c1b565b8114612c3957600080fd5b50565b600081359050612c4b81612c25565b92915050565b600060208284031215612c6757612c66612c11565b5b6000612c7584828501612c3c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ca982612c7e565b9050919050565b612cb981612c9e565b8114612cc457600080fd5b50565b600081359050612cd681612cb0565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612d0157612d00612cdc565b5b8235905067ffffffffffffffff811115612d1e57612d1d612ce1565b5b602083019150836020820283011115612d3a57612d39612ce6565b5b9250929050565b60008083601f840112612d5757612d56612cdc565b5b8235905067ffffffffffffffff811115612d7457612d73612ce1565b5b602083019150836020820283011115612d9057612d8f612ce6565b5b9250929050565b600080600080600060608688031215612db357612db2612c11565b5b6000612dc188828901612cc7565b955050602086013567ffffffffffffffff811115612de257612de1612c16565b5b612dee88828901612ceb565b9450945050604086013567ffffffffffffffff811115612e1157612e10612c16565b5b612e1d88828901612d41565b92509250509295509295909350565b60008115159050919050565b612e4181612e2c565b8114612e4c57600080fd5b50565b600081359050612e5e81612e38565b92915050565b600060208284031215612e7a57612e79612c11565b5b6000612e8884828501612e4f565b91505092915050565b60008060008060408587031215612eab57612eaa612c11565b5b600085013567ffffffffffffffff811115612ec957612ec8612c16565b5b612ed587828801612ceb565b9450945050602085013567ffffffffffffffff811115612ef857612ef7612c16565b5b612f0487828801612ceb565b925092505092959194509250565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f4781612c1b565b82525050565b6000612f598383612f3e565b60208301905092915050565b6000602082019050919050565b6000612f7d82612f12565b612f878185612f1d565b9350612f9283612f2e565b8060005b83811015612fc3578151612faa8882612f4d565b9750612fb583612f65565b925050600181019050612f96565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b600061301882612f12565b6130228185612ffc565b935061302d83612f2e565b8060005b8381101561305e5781516130458882612f4d565b975061305083612f65565b925050600181019050613031565b5085935050505092915050565b6000613077838361300d565b905092915050565b6000602082019050919050565b600061309782612fd0565b6130a18185612fdb565b9350836020820285016130b385612fec565b8060005b858110156130ef57848403895281516130d0858261306b565b94506130db8361307f565b925060208a019950506001810190506130b7565b50829750879550505050505092915050565b6000608082019050818103600083015261311b8187612f72565b9050818103602083015261312f818661308c565b90508181036040830152613143818561308c565b905081810360608301526131578184612f72565b905095945050505050565b600061ffff82169050919050565b61317981613162565b811461318457600080fd5b50565b60008135905061319681613170565b92915050565b6000602082840312156131b2576131b1612c11565b5b60006131c084828501613187565b91505092915050565b600080602083850312156131e0576131df612c11565b5b600083013567ffffffffffffffff8111156131fe576131fd612c16565b5b61320a85828601612ceb565b92509250509250929050565b600060208201905081810360008301526132308184612f72565b905092915050565b61324181613162565b82525050565b600060208201905061325c6000830184613238565b92915050565b60006020828403121561327857613277612c11565b5b600061328684828501612cc7565b91505092915050565b61329881612c1b565b82525050565b60006020820190506132b3600083018461328f565b92915050565b6132c281612e2c565b82525050565b60006020820190506132dd60008301846132b9565b92915050565b6132ec81612c9e565b82525050565b600060208201905061330760008301846132e3565b92915050565b6000806000806040858703121561332757613326612c11565b5b600085013567ffffffffffffffff81111561334557613344612c16565b5b61335187828801612ceb565b9450945050602085013567ffffffffffffffff81111561337457613373612c16565b5b61338087828801612d41565b925092505092959194509250565b6000806000606084860312156133a7576133a6612c11565b5b60006133b586828701612cc7565b93505060206133c686828701612cc7565b92505060406133d786828701612c3c565b9150509250925092565b600082825260208201905092915050565b7f426174636853656e6465723a2063616c6c6572206973206e6f7420746865206f60008201527f776e657200000000000000000000000000000000000000000000000000000000602082015250565b600061344e6024836133e1565b9150613459826133f2565b604082019050919050565b6000602082019050818103600083015261347d81613441565b9050919050565b7f426174636853656e6465723a206d617820646973636f756e742063616e6e6f7460008201527f2065786365656420666565000000000000000000000000000000000000000000602082015250565b60006134e0602b836133e1565b91506134eb82613484565b604082019050919050565b6000602082019050818103600083015261350f816134d3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061355082612c1b565b915061355b83612c1b565b925082820390508181111561357357613572613516565b5b92915050565b7f426174636853656e6465723a20696e73756666696369656e7420666565000000600082015250565b60006135af601d836133e1565b91506135ba82613579565b602082019050919050565b600060208201905081810360008301526135de816135a2565b9050919050565b7f426174636853656e6465723a20636f6e74726163742069732070617573656400600082015250565b600061361b601f836133e1565b9150613626826135e5565b602082019050919050565b6000602082019050818103600083015261364a8161360e565b9050919050565b7f426174636853656e6465723a207265656e7472616e742063616c6c0000000000600082015250565b6000613687601b836133e1565b915061369282613651565b602082019050919050565b600060208201905081810360008301526136b68161367a565b9050919050565b7f426174636853656e6465723a20726563697069656e747320616e6420616d6f7560008201527f6e7473206c656e677468206d69736d6174636800000000000000000000000000602082015250565b60006137196033836133e1565b9150613724826136bd565b604082019050919050565b600060208201905081810360008301526137488161370c565b9050919050565b7f426174636853656e6465723a2065786365656473206172726179206c696d6974600082015250565b60006137856020836133e1565b91506137908261374f565b602082019050919050565b600060208201905081810360008301526137b481613778565b9050919050565b7f426174636853656e6465723a20656d70747920726563697069656e747320617260008201527f7261790000000000000000000000000000000000000000000000000000000000602082015250565b60006138176023836133e1565b9150613822826137bb565b604082019050919050565b600060208201905081810360008301526138468161380a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061388782612c1b565b915061389283612c1b565b92508282019050808211156138aa576138a9613516565b5b92915050565b60006040820190506138c560008301856132e3565b6138d260208301846132e3565b9392505050565b6000815190506138e881612c25565b92915050565b60006020828403121561390457613903612c11565b5b6000613912848285016138d9565b91505092915050565b7f426174636853656e6465723a20696e73756666696369656e7420746f6b656e2060008201527f616c6c6f77616e63650000000000000000000000000000000000000000000000602082015250565b60006139776029836133e1565b91506139828261391b565b604082019050919050565b600060208201905081810360008301526139a68161396a565b9050919050565b7f426174636853656e6465723a20696e73756666696369656e7420746f6b656e2060008201527f62616c616e636500000000000000000000000000000000000000000000000000602082015250565b6000613a096027836133e1565b9150613a14826139ad565b604082019050919050565b60006020820190508181036000830152613a38816139fc565b9050919050565b7f426174636853656e6465723a20726563697069656e742063616e6e6f7420626560008201527f207a65726f206164647265737300000000000000000000000000000000000000602082015250565b6000613a9b602d836133e1565b9150613aa682613a3f565b604082019050919050565b60006020820190508181036000830152613aca81613a8e565b9050919050565b6000606082019050613ae660008301866132e3565b613af360208301856132e3565b613b00604083018461328f565b949350505050565b600081519050613b1781612e38565b92915050565b600060208284031215613b3357613b32612c11565b5b6000613b4184828501613b08565b91505092915050565b7f426174636853656e6465723a20746f6b656e207472616e73666572206661696c60008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ba66022836133e1565b9150613bb182613b4a565b604082019050919050565b60006020820190508181036000830152613bd581613b99565b9050919050565b6000613be782612c1b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c1957613c18613516565b5b600182019050919050565b6000604082019050613c39600083018561328f565b613c4660208301846132e3565b9392505050565b7f426174636853656e6465723a2065786365656473206163636f756e74206c696d60008201527f6974000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ca96022836133e1565b9150613cb482613c4d565b604082019050919050565b60006020820190508181036000830152613cd881613c9c565b9050919050565b7f426174636853656e6465723a206578636565647320746f6b656e206c696d6974600082015250565b6000613d156020836133e1565b9150613d2082613cdf565b602082019050919050565b60006020820190508181036000830152613d4481613d08565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f426174636853656e6465723a206172726179206c696d69742063616e6e6f742060008201527f6265207a65726f00000000000000000000000000000000000000000000000000602082015250565b6000613dd66027836133e1565b9150613de182613d7a565b604082019050919050565b60006020820190508181036000830152613e0581613dc9565b9050919050565b7f426174636853656e6465723a206172726179206c696d697420746f6f206c617260008201527f6765000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e686022836133e1565b9150613e7382613e0c565b604082019050919050565b60006020820190508181036000830152613e9781613e5b565b9050919050565b7f426174636853656e6465723a2065786365656473206d6178696d756d2061636360008201527f6f756e7473206c696d6974000000000000000000000000000000000000000000602082015250565b6000613efa602b836133e1565b9150613f0582613e9e565b604082019050919050565b60006020820190508181036000830152613f2981613eed565b9050919050565b7f426174636853656e6465723a2063616c6c6572206973206e6f7420746865207060008201527f656e64696e67206f776e65720000000000000000000000000000000000000000602082015250565b6000613f8c602c836133e1565b9150613f9782613f30565b604082019050919050565b60006020820190508181036000830152613fbb81613f7f565b9050919050565b7f426174636853656e6465723a206665652063616e6e6f74206265207a65726f00600082015250565b6000613ff8601f836133e1565b915061400382613fc2565b602082019050919050565b6000602082019050818103600083015261402781613feb565b9050919050565b7f426174636853656e6465723a2062617463682066656573206c696d697420636160008201527f6e6e6f74206265207a65726f0000000000000000000000000000000000000000602082015250565b600061408a602c836133e1565b91506140958261402e565b604082019050919050565b600060208201905081810360008301526140b98161407d565b9050919050565b7f426174636853656e6465723a2062617463682066656573206c696d697420746f60008201527f6f206c6172676500000000000000000000000000000000000000000000000000602082015250565b600061411c6027836133e1565b9150614127826140c0565b604082019050919050565b6000602082019050818103600083015261414b8161410f565b9050919050565b7f426174636853656e6465723a20696e73756666696369656e742045544820736560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b60006141ae6022836133e1565b91506141b982614152565b604082019050919050565b600060208201905081810360008301526141dd816141a1565b9050919050565b600081905092915050565b50565b60006141ff6000836141e4565b915061420a826141ef565b600082019050919050565b6000614220826141f2565b9150819050919050565b7f426174636853656e6465723a20455448207472616e73666572206661696c6564600082015250565b60006142606020836133e1565b915061426b8261422a565b602082019050919050565b6000602082019050818103600083015261428f81614253565b9050919050565b7f426174636853656e6465723a20726566756e64206661696c6564000000000000600082015250565b60006142cc601a836133e1565b91506142d782614296565b602082019050919050565b600060208201905081810360008301526142fb816142bf565b9050919050565b7f426174636853656e6465723a2063616e6e6f742072657363756520746f207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b600061435e602a836133e1565b915061436982614302565b604082019050919050565b6000602082019050818103600083015261438d81614351565b9050919050565b60006040820190506143a960008301856132e3565b6143b6602083018461328f565b9392505050565b7f426174636853656e6465723a20746f6b656e20726573637565206661696c6564600082015250565b60006143f36020836133e1565b91506143fe826143bd565b602082019050919050565b60006020820190508181036000830152614422816143e6565b9050919050565b7f426174636853656e6465723a20616c726561647920696e697469616c697a6564600082015250565b600061445f6020836133e1565b915061446a82614429565b602082019050919050565b6000602082019050818103600083015261448e81614452565b9050919050565b60006144a082612c1b565b91506144ab83612c1b565b92508282026144b981612c1b565b915082820484148315176144d0576144cf613516565b5b5092915050565b7f426174636853656e6465723a206e6577206f776e657220697320746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000614533602a836133e1565b915061453e826144d7565b604082019050919050565b6000602082019050818103600083015261456281614526565b905091905056fea26469706673582212208820f42f30b99fc281f57388a6fd318e7a3feae626fa0b5ec9c45b2694b0fe0d64736f6c634300081c0033

Deployed Bytecode

0x6080604052600436106101bb5760003560e01c8063a771ebc7116100ec578063c5f4c98b1161008a578063e30c397811610064578063e30c3978146105d4578063e4e1f29b146105ff578063eff8e7481461062a578063f2fde38b14610667576101c2565b8063c5f4c98b14610557578063ddca3f4314610580578063df8de3e7146105ab576101c2565b8063b4ae641c116100c6578063b4ae641c1461049b578063b8b89e1b146104c6578063c1258f69146104f1578063c4d66de81461052e576101c2565b8063a771ebc71461042b578063ab883d2814610456578063b2118a8d14610472576101c2565b80633a01e6ab116101595780635c975abb116101335780635c975abb146103835780636a1db1bf146103ae5780638da5cb5b146103d757806394df2f4814610402576101c2565b80633a01e6ab146103045780634e71e0c81461032f578063591552da14610346576101c2565b806316c38b3c1161019557806316c38b3c146102355780632bf351581461025e5780632dec79331461029e578063377dcd97146102c7576101c2565b8063079cccf2146101c75780630b66f3f5146101f05780630db474fa1461020c576101c2565b366101c257005b600080fd5b3480156101d357600080fd5b506101ee60048036038101906101e99190612c51565b610690565b005b61020a60048036038101906102059190612d97565b61076e565b005b34801561021857600080fd5b50610233600480360381019061022e9190612e64565b610db2565b005b34801561024157600080fd5b5061025c60048036038101906102579190612e64565b610e96565b005b34801561026a57600080fd5b5061028560048036038101906102809190612e91565b610f7a565b6040516102959493929190613101565b60405180910390f35b3480156102aa57600080fd5b506102c560048036038101906102c0919061319c565b611539565b005b3480156102d357600080fd5b506102ee60048036038101906102e991906131c9565b611679565b6040516102fb9190613216565b60405180910390f35b34801561031057600080fd5b5061031961179a565b6040516103269190613247565b60405180910390f35b34801561033b57600080fd5b506103446117ae565b005b34801561035257600080fd5b5061036d60048036038101906103689190613262565b611989565b60405161037a919061329e565b60405180910390f35b34801561038f57600080fd5b506103986119c6565b6040516103a591906132c8565b60405180910390f35b3480156103ba57600080fd5b506103d560048036038101906103d09190612c51565b6119d9565b005b3480156103e357600080fd5b506103ec611ab6565b6040516103f991906132f2565b60405180910390f35b34801561040e57600080fd5b506104296004803603810190610424919061319c565b611adc565b005b34801561043757600080fd5b50610440611c1b565b60405161044d91906132c8565b60405180910390f35b610470600480360381019061046b919061330d565b611c2e565b005b34801561047e57600080fd5b506104996004803603810190610494919061338e565b6121d4565b005b3480156104a757600080fd5b506104b061239b565b6040516104bd9190613247565b60405180910390f35b3480156104d257600080fd5b506104db6123af565b6040516104e8919061329e565b60405180910390f35b3480156104fd57600080fd5b5061051860048036038101906105139190613262565b6123b5565b604051610525919061329e565b60405180910390f35b34801561053a57600080fd5b5061055560048036038101906105509190613262565b6123cd565b005b34801561056357600080fd5b5061057e60048036038101906105799190612c51565b61257c565b005b34801561058c57600080fd5b50610595612616565b6040516105a2919061329e565b60405180910390f35b3480156105b757600080fd5b506105d260048036038101906105cd9190613262565b61261c565b005b3480156105e057600080fd5b506105e9612979565b6040516105f691906132f2565b60405180910390f35b34801561060b57600080fd5b5061061461299f565b604051610621919061329e565b60405180910390f35b34801561063657600080fd5b50610651600480360381019061064c9190613262565b6129a5565b60405161065e919061329e565b60405180910390f35b34801561067357600080fd5b5061068e60048036038101906106899190613262565b612a1c565b005b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610720576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161071790613464565b60405180910390fd5b6005548110610764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161075b906134f6565b60405180910390fd5b8060048190555050565b600660039054906101000a900460ff16156107dc5761078c336129a5565b6005546107999190613545565b3410156107db576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016107d2906135c5565b60405180910390fd5b5b600660029054906101000a900460ff161561082c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161082390613631565b60405180910390fd5b6000610836612bfd565b90506002810361087b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108729061369d565b60405180910390fd5b6108856002612c07565b8282905085859050146108cd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108c49061372f565b60405180910390fd5b600260149054906101000a900461ffff1661ffff16858590501115610927576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161091e9061379b565b60405180910390fd5b6000858590501161096d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109649061382d565b60405180910390fd5b600086905060008060005b868690508110156109b7578686828181106109965761099561384d565b5b90506020020135826109a8919061387c565b91508080600101915050610978565b50808373ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b81526004016109f49291906138b0565b602060405180830381865afa158015610a11573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a3591906138ee565b1015610a76576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a6d9061398d565b60405180910390fd5b808373ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610ab091906132f2565b602060405180830381865afa158015610acd573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610af191906138ee565b1015610b32576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b2990613a1f565b60405180910390fd5b60005b88889050811015610d0f57600073ffffffffffffffffffffffffffffffffffffffff16898983818110610b6b57610b6a61384d565b5b9050602002016020810190610b809190613262565b73ffffffffffffffffffffffffffffffffffffffff1603610bd6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bcd90613ab1565b60405180910390fd5b60008473ffffffffffffffffffffffffffffffffffffffff166323b872dd338c8c86818110610c0857610c0761384d565b5b9050602002016020810190610c1d9190613262565b8b8b87818110610c3057610c2f61384d565b5b905060200201356040518463ffffffff1660e01b8152600401610c5593929190613ad1565b6020604051808303816000875af1158015610c74573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610c989190613b1d565b905080610cda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610cd190613bbc565b60405180910390fd5b878783818110610ced57610cec61384d565b5b9050602002013584610cff919061387c565b9350818060010192505050610b35565b506000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000815480929190610d5f90613bdc565b91905055507fce0f36b64910d314caed8f8461c289a41c154bc8310f16ac58dd956daae3ebf6828a604051610d95929190613c24565b60405180910390a1505050610daa6001612c07565b505050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610e42576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e3990613464565b60405180910390fd5b80600660036101000a81548160ff0219169083151502179055507fcd861584328fc8fda4f81b958b2d5d32352d6394dc689f6246a7411e4b71dac781604051610e8b91906132c8565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610f26576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f1d90613464565b60405180910390fd5b80600660026101000a81548160ff0219169083151502179055507f9a506b30e47f3823b09f67e4c0dfa5c3d8023b71825b7ceaa97677129128c9c581604051610f6f91906132c8565b60405180910390a150565b606080606080600260149054906101000a900461ffff1661ffff16868690501115610fda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610fd190613cbf565b60405180910390fd5b600260149054906101000a900461ffff1661ffff16888890501115611034576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161102b90613d2b565b60405180910390fd5b8585905067ffffffffffffffff81111561105157611050613d4b565b5b60405190808252806020026020018201604052801561107f5781602001602082028036833780820191505090505b5093508585905067ffffffffffffffff81111561109f5761109e613d4b565b5b6040519080825280602002602001820160405280156110cd5781602001602082028036833780820191505090505b50905060005b86869050811015611198578686828181106110f1576110f061384d565b5b90506020020160208101906111069190613262565b73ffffffffffffffffffffffffffffffffffffffff16318582815181106111305761112f61384d565b5b60200260200101818152505061116c8787838181106111525761115161384d565b5b90506020020160208101906111679190613262565b611989565b82828151811061117f5761117e61384d565b5b60200260200101818152505080806001019150506110d3565b508787905067ffffffffffffffff8111156111b6576111b5613d4b565b5b6040519080825280602002602001820160405280156111e957816020015b60608152602001906001900390816111d45790505b5092508787905067ffffffffffffffff81111561120957611208613d4b565b5b60405190808252806020026020018201604052801561123c57816020015b60608152602001906001900390816112275790505b50915060005b8888905081101561152d5760008989838181106112625761126161384d565b5b90506020020160208101906112779190613262565b90508787905067ffffffffffffffff81111561129657611295613d4b565b5b6040519080825280602002602001820160405280156112c45781602001602082028036833780820191505090505b508583815181106112d8576112d761384d565b5b60200260200101819052508787905067ffffffffffffffff811115611300576112ff613d4b565b5b60405190808252806020026020018201604052801561132e5781602001602082028036833780820191505090505b508483815181106113425761134161384d565b5b602002602001018190525060005b8888905081101561151e578173ffffffffffffffffffffffffffffffffffffffff166370a082318a8a8481811061138a5761138961384d565b5b905060200201602081019061139f9190613262565b6040518263ffffffff1660e01b81526004016113bb91906132f2565b602060405180830381865afa1580156113d8573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113fc91906138ee565b86848151811061140f5761140e61384d565b5b602002602001015182815181106114295761142861384d565b5b6020026020010181815250508173ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e8a8a848181106114645761146361384d565b5b90506020020160208101906114799190613262565b306040518363ffffffff1660e01b81526004016114979291906138b0565b602060405180830381865afa1580156114b4573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906114d891906138ee565b8584815181106114eb576114ea61384d565b5b602002602001015182815181106115055761150461384d565b5b6020026020010181815250508080600101915050611350565b50508080600101915050611242565b50945094509450949050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146115c9576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115c090613464565b60405180910390fd5b60008161ffff1611611610576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161160790613dec565b60405180910390fd5b6101f48161ffff161115611659576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165090613e7e565b60405180910390fd5b80600260146101000a81548161ffff021916908361ffff16021790555050565b6060600660009054906101000a900461ffff1661ffff168383905011156116d5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016116cc90613f10565b60405180910390fd5b60008383905067ffffffffffffffff8111156116f4576116f3613d4b565b5b6040519080825280602002602001820160405280156117225781602001602082028036833780820191505090505b50905060005b8484905081101561178f576117638585838181106117495761174861384d565b5b905060200201602081019061175e9190613262565b611989565b8282815181106117765761177561384d565b5b6020026020010181815250508080600101915050611728565b508091505092915050565b600660009054906101000a900461ffff1681565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461183e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161183590613fa2565b60405180910390fd5b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169050600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a350565b6000600660039054906101000a900460ff166119a857600090506119c1565b6119b1826129a5565b6005546119be9190613545565b90505b919050565b600660029054906101000a900460ff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611a69576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611a6090613464565b60405180910390fd5b60008111611aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611aa39061400e565b60405180910390fd5b8060058190555050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611b6c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b6390613464565b60405180910390fd5b60008161ffff1611611bb3576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611baa906140a0565b60405180910390fd5b60648161ffff161115611bfb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bf290614132565b60405180910390fd5b80600660006101000a81548161ffff021916908361ffff16021790555050565b600660039054906101000a900460ff1681565b600660039054906101000a900460ff1615611c9c57611c4c336129a5565b600554611c599190613545565b341015611c9b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c92906135c5565b60405180910390fd5b5b600660029054906101000a900460ff1615611cec576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ce390613631565b60405180910390fd5b6000611cf6612bfd565b905060028103611d3b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d329061369d565b60405180910390fd5b611d456002612c07565b828290508585905014611d8d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d849061372f565b60405180910390fd5b600260149054906101000a900461ffff1661ffff16858590501115611de7576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611dde9061379b565b60405180910390fd5b60008585905011611e2d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611e249061382d565b60405180910390fd5b6000805b86869050811015611f0657600073ffffffffffffffffffffffffffffffffffffffff16878783818110611e6757611e6661384d565b5b9050602002016020810190611e7c9190613262565b73ffffffffffffffffffffffffffffffffffffffff1603611ed2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ec990613ab1565b60405180910390fd5b848482818110611ee557611ee461384d565b5b9050602002013582611ef7919061387c565b91508080600101915050611e31565b506000611f1233611989565b82611f1d919061387c565b905080341015611f62576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611f59906141c4565b60405180910390fd5b60005b8787905081101561206a576000888883818110611f8557611f8461384d565b5b9050602002016020810190611f9a9190613262565b73ffffffffffffffffffffffffffffffffffffffff16878784818110611fc357611fc261384d565b5b90506020020135604051611fd690614215565b60006040518083038185875af1925050503d8060008114612013576040519150601f19603f3d011682016040523d82523d6000602084013e612018565b606091505b505090508061205c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161205390614276565b60405180910390fd5b818060010192505050611f65565b50600081346120799190613545565b905060008111156121325760003373ffffffffffffffffffffffffffffffffffffffff16826040516120aa90614215565b60006040518083038185875af1925050503d80600081146120e7576040519150601f19603f3d011682016040523d82523d6000602084013e6120ec565b606091505b5050905080612130576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612127906142e2565b60405180910390fd5b505b6000803373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600081548092919061218190613bdc565b91905055507fce0f36b64910d314caed8f8461c289a41c154bc8310f16ac58dd956daae3ebf68360006040516121b8929190613c24565b60405180910390a15050506121cd6001612c07565b5050505050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612264576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161225b90613464565b60405180910390fd5b6000839050600073ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16036122d8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122cf90614374565b60405180910390fd5b8073ffffffffffffffffffffffffffffffffffffffff1663a9059cbb84846040518363ffffffff1660e01b8152600401612313929190614394565b6020604051808303816000875af1158015612332573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906123569190613b1d565b612395576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161238c90614409565b60405180910390fd5b50505050565b600260149054906101000a900461ffff1681565b60045481565b60006020528060005260406000206000915090505481565b600073ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff161461245e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161245590614475565b60405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506096600260146101000a81548161ffff021916908361ffff160217905550652d79883d2000600381905550668e1bc9bf04000060048190555066b1a2bc2ec500006005819055506014600660006101000a81548161ffff021916908361ffff1602179055506000600660026101000a81548160ff0219169083151502179055506000600660036101000a81548160ff02191690831515021790555060016007819055507f908408e307fc569b417f6cbec5d5a06f44a0a505ac0479b47d421a4b2fd6a1e68160405161257191906132f2565b60405180910390a150565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461260c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161260390613464565b60405180910390fd5b8060038190555050565b60055481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16146126ac576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016126a390613464565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff16036127b4576000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff164760405161272890614215565b60006040518083038185875af1925050503d8060008114612765576040519150601f19603f3d011682016040523d82523d6000602084013e61276a565b606091505b50509050806127ae576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127a590614276565b60405180910390fd5b50612976565b600081905060008173ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016127f491906132f2565b602060405180830381865afa158015612811573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061283591906138ee565b90508173ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16836040518363ffffffff1660e01b8152600401612894929190614394565b6020604051808303816000875af11580156128b3573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906128d79190613b1d565b612916576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161290d90613bbc565b60405180910390fd5b7ff931edb47c50b4b4104c187b5814a9aef5f709e17e2ecf9617e860cacade929c83600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff168360405161296b93929190613ad1565b60405180910390a150505b50565b600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60035481565b6000806000808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205490506000600354826129f99190614495565b9050600454811115612a115760045492505050612a17565b80925050505b919050565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614612aac576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612aa390613464565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603612b1b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612b1290614549565b60405180910390fd5b80600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167fb150023a879fd806e3599b6ca8ee3b60f0e360ab3846d128d67ebce1a391639a60405160405180910390a350565b6000600754905090565b8060078190555050565b600080fd5b600080fd5b6000819050919050565b612c2e81612c1b565b8114612c3957600080fd5b50565b600081359050612c4b81612c25565b92915050565b600060208284031215612c6757612c66612c11565b5b6000612c7584828501612c3c565b91505092915050565b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b6000612ca982612c7e565b9050919050565b612cb981612c9e565b8114612cc457600080fd5b50565b600081359050612cd681612cb0565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f840112612d0157612d00612cdc565b5b8235905067ffffffffffffffff811115612d1e57612d1d612ce1565b5b602083019150836020820283011115612d3a57612d39612ce6565b5b9250929050565b60008083601f840112612d5757612d56612cdc565b5b8235905067ffffffffffffffff811115612d7457612d73612ce1565b5b602083019150836020820283011115612d9057612d8f612ce6565b5b9250929050565b600080600080600060608688031215612db357612db2612c11565b5b6000612dc188828901612cc7565b955050602086013567ffffffffffffffff811115612de257612de1612c16565b5b612dee88828901612ceb565b9450945050604086013567ffffffffffffffff811115612e1157612e10612c16565b5b612e1d88828901612d41565b92509250509295509295909350565b60008115159050919050565b612e4181612e2c565b8114612e4c57600080fd5b50565b600081359050612e5e81612e38565b92915050565b600060208284031215612e7a57612e79612c11565b5b6000612e8884828501612e4f565b91505092915050565b60008060008060408587031215612eab57612eaa612c11565b5b600085013567ffffffffffffffff811115612ec957612ec8612c16565b5b612ed587828801612ceb565b9450945050602085013567ffffffffffffffff811115612ef857612ef7612c16565b5b612f0487828801612ceb565b925092505092959194509250565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b612f4781612c1b565b82525050565b6000612f598383612f3e565b60208301905092915050565b6000602082019050919050565b6000612f7d82612f12565b612f878185612f1d565b9350612f9283612f2e565b8060005b83811015612fc3578151612faa8882612f4d565b9750612fb583612f65565b925050600181019050612f96565b5085935050505092915050565b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b600082825260208201905092915050565b600061301882612f12565b6130228185612ffc565b935061302d83612f2e565b8060005b8381101561305e5781516130458882612f4d565b975061305083612f65565b925050600181019050613031565b5085935050505092915050565b6000613077838361300d565b905092915050565b6000602082019050919050565b600061309782612fd0565b6130a18185612fdb565b9350836020820285016130b385612fec565b8060005b858110156130ef57848403895281516130d0858261306b565b94506130db8361307f565b925060208a019950506001810190506130b7565b50829750879550505050505092915050565b6000608082019050818103600083015261311b8187612f72565b9050818103602083015261312f818661308c565b90508181036040830152613143818561308c565b905081810360608301526131578184612f72565b905095945050505050565b600061ffff82169050919050565b61317981613162565b811461318457600080fd5b50565b60008135905061319681613170565b92915050565b6000602082840312156131b2576131b1612c11565b5b60006131c084828501613187565b91505092915050565b600080602083850312156131e0576131df612c11565b5b600083013567ffffffffffffffff8111156131fe576131fd612c16565b5b61320a85828601612ceb565b92509250509250929050565b600060208201905081810360008301526132308184612f72565b905092915050565b61324181613162565b82525050565b600060208201905061325c6000830184613238565b92915050565b60006020828403121561327857613277612c11565b5b600061328684828501612cc7565b91505092915050565b61329881612c1b565b82525050565b60006020820190506132b3600083018461328f565b92915050565b6132c281612e2c565b82525050565b60006020820190506132dd60008301846132b9565b92915050565b6132ec81612c9e565b82525050565b600060208201905061330760008301846132e3565b92915050565b6000806000806040858703121561332757613326612c11565b5b600085013567ffffffffffffffff81111561334557613344612c16565b5b61335187828801612ceb565b9450945050602085013567ffffffffffffffff81111561337457613373612c16565b5b61338087828801612d41565b925092505092959194509250565b6000806000606084860312156133a7576133a6612c11565b5b60006133b586828701612cc7565b93505060206133c686828701612cc7565b92505060406133d786828701612c3c565b9150509250925092565b600082825260208201905092915050565b7f426174636853656e6465723a2063616c6c6572206973206e6f7420746865206f60008201527f776e657200000000000000000000000000000000000000000000000000000000602082015250565b600061344e6024836133e1565b9150613459826133f2565b604082019050919050565b6000602082019050818103600083015261347d81613441565b9050919050565b7f426174636853656e6465723a206d617820646973636f756e742063616e6e6f7460008201527f2065786365656420666565000000000000000000000000000000000000000000602082015250565b60006134e0602b836133e1565b91506134eb82613484565b604082019050919050565b6000602082019050818103600083015261350f816134d3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061355082612c1b565b915061355b83612c1b565b925082820390508181111561357357613572613516565b5b92915050565b7f426174636853656e6465723a20696e73756666696369656e7420666565000000600082015250565b60006135af601d836133e1565b91506135ba82613579565b602082019050919050565b600060208201905081810360008301526135de816135a2565b9050919050565b7f426174636853656e6465723a20636f6e74726163742069732070617573656400600082015250565b600061361b601f836133e1565b9150613626826135e5565b602082019050919050565b6000602082019050818103600083015261364a8161360e565b9050919050565b7f426174636853656e6465723a207265656e7472616e742063616c6c0000000000600082015250565b6000613687601b836133e1565b915061369282613651565b602082019050919050565b600060208201905081810360008301526136b68161367a565b9050919050565b7f426174636853656e6465723a20726563697069656e747320616e6420616d6f7560008201527f6e7473206c656e677468206d69736d6174636800000000000000000000000000602082015250565b60006137196033836133e1565b9150613724826136bd565b604082019050919050565b600060208201905081810360008301526137488161370c565b9050919050565b7f426174636853656e6465723a2065786365656473206172726179206c696d6974600082015250565b60006137856020836133e1565b91506137908261374f565b602082019050919050565b600060208201905081810360008301526137b481613778565b9050919050565b7f426174636853656e6465723a20656d70747920726563697069656e747320617260008201527f7261790000000000000000000000000000000000000000000000000000000000602082015250565b60006138176023836133e1565b9150613822826137bb565b604082019050919050565b600060208201905081810360008301526138468161380a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600061388782612c1b565b915061389283612c1b565b92508282019050808211156138aa576138a9613516565b5b92915050565b60006040820190506138c560008301856132e3565b6138d260208301846132e3565b9392505050565b6000815190506138e881612c25565b92915050565b60006020828403121561390457613903612c11565b5b6000613912848285016138d9565b91505092915050565b7f426174636853656e6465723a20696e73756666696369656e7420746f6b656e2060008201527f616c6c6f77616e63650000000000000000000000000000000000000000000000602082015250565b60006139776029836133e1565b91506139828261391b565b604082019050919050565b600060208201905081810360008301526139a68161396a565b9050919050565b7f426174636853656e6465723a20696e73756666696369656e7420746f6b656e2060008201527f62616c616e636500000000000000000000000000000000000000000000000000602082015250565b6000613a096027836133e1565b9150613a14826139ad565b604082019050919050565b60006020820190508181036000830152613a38816139fc565b9050919050565b7f426174636853656e6465723a20726563697069656e742063616e6e6f7420626560008201527f207a65726f206164647265737300000000000000000000000000000000000000602082015250565b6000613a9b602d836133e1565b9150613aa682613a3f565b604082019050919050565b60006020820190508181036000830152613aca81613a8e565b9050919050565b6000606082019050613ae660008301866132e3565b613af360208301856132e3565b613b00604083018461328f565b949350505050565b600081519050613b1781612e38565b92915050565b600060208284031215613b3357613b32612c11565b5b6000613b4184828501613b08565b91505092915050565b7f426174636853656e6465723a20746f6b656e207472616e73666572206661696c60008201527f6564000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ba66022836133e1565b9150613bb182613b4a565b604082019050919050565b60006020820190508181036000830152613bd581613b99565b9050919050565b6000613be782612c1b565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203613c1957613c18613516565b5b600182019050919050565b6000604082019050613c39600083018561328f565b613c4660208301846132e3565b9392505050565b7f426174636853656e6465723a2065786365656473206163636f756e74206c696d60008201527f6974000000000000000000000000000000000000000000000000000000000000602082015250565b6000613ca96022836133e1565b9150613cb482613c4d565b604082019050919050565b60006020820190508181036000830152613cd881613c9c565b9050919050565b7f426174636853656e6465723a206578636565647320746f6b656e206c696d6974600082015250565b6000613d156020836133e1565b9150613d2082613cdf565b602082019050919050565b60006020820190508181036000830152613d4481613d08565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f426174636853656e6465723a206172726179206c696d69742063616e6e6f742060008201527f6265207a65726f00000000000000000000000000000000000000000000000000602082015250565b6000613dd66027836133e1565b9150613de182613d7a565b604082019050919050565b60006020820190508181036000830152613e0581613dc9565b9050919050565b7f426174636853656e6465723a206172726179206c696d697420746f6f206c617260008201527f6765000000000000000000000000000000000000000000000000000000000000602082015250565b6000613e686022836133e1565b9150613e7382613e0c565b604082019050919050565b60006020820190508181036000830152613e9781613e5b565b9050919050565b7f426174636853656e6465723a2065786365656473206d6178696d756d2061636360008201527f6f756e7473206c696d6974000000000000000000000000000000000000000000602082015250565b6000613efa602b836133e1565b9150613f0582613e9e565b604082019050919050565b60006020820190508181036000830152613f2981613eed565b9050919050565b7f426174636853656e6465723a2063616c6c6572206973206e6f7420746865207060008201527f656e64696e67206f776e65720000000000000000000000000000000000000000602082015250565b6000613f8c602c836133e1565b9150613f9782613f30565b604082019050919050565b60006020820190508181036000830152613fbb81613f7f565b9050919050565b7f426174636853656e6465723a206665652063616e6e6f74206265207a65726f00600082015250565b6000613ff8601f836133e1565b915061400382613fc2565b602082019050919050565b6000602082019050818103600083015261402781613feb565b9050919050565b7f426174636853656e6465723a2062617463682066656573206c696d697420636160008201527f6e6e6f74206265207a65726f0000000000000000000000000000000000000000602082015250565b600061408a602c836133e1565b91506140958261402e565b604082019050919050565b600060208201905081810360008301526140b98161407d565b9050919050565b7f426174636853656e6465723a2062617463682066656573206c696d697420746f60008201527f6f206c6172676500000000000000000000000000000000000000000000000000602082015250565b600061411c6027836133e1565b9150614127826140c0565b604082019050919050565b6000602082019050818103600083015261414b8161410f565b9050919050565b7f426174636853656e6465723a20696e73756666696369656e742045544820736560008201527f6e74000000000000000000000000000000000000000000000000000000000000602082015250565b60006141ae6022836133e1565b91506141b982614152565b604082019050919050565b600060208201905081810360008301526141dd816141a1565b9050919050565b600081905092915050565b50565b60006141ff6000836141e4565b915061420a826141ef565b600082019050919050565b6000614220826141f2565b9150819050919050565b7f426174636853656e6465723a20455448207472616e73666572206661696c6564600082015250565b60006142606020836133e1565b915061426b8261422a565b602082019050919050565b6000602082019050818103600083015261428f81614253565b9050919050565b7f426174636853656e6465723a20726566756e64206661696c6564000000000000600082015250565b60006142cc601a836133e1565b91506142d782614296565b602082019050919050565b600060208201905081810360008301526142fb816142bf565b9050919050565b7f426174636853656e6465723a2063616e6e6f742072657363756520746f207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b600061435e602a836133e1565b915061436982614302565b604082019050919050565b6000602082019050818103600083015261438d81614351565b9050919050565b60006040820190506143a960008301856132e3565b6143b6602083018461328f565b9392505050565b7f426174636853656e6465723a20746f6b656e20726573637565206661696c6564600082015250565b60006143f36020836133e1565b91506143fe826143bd565b602082019050919050565b60006020820190508181036000830152614422816143e6565b9050919050565b7f426174636853656e6465723a20616c726561647920696e697469616c697a6564600082015250565b600061445f6020836133e1565b915061446a82614429565b602082019050919050565b6000602082019050818103600083015261448e81614452565b9050919050565b60006144a082612c1b565b91506144ab83612c1b565b92508282026144b981612c1b565b915082820484148315176144d0576144cf613516565b5b5092915050565b7f426174636853656e6465723a206e6577206f776e657220697320746865207a6560008201527f726f206164647265737300000000000000000000000000000000000000000000602082015250565b6000614533602a836133e1565b915061453e826144d7565b604082019050919050565b6000602082019050818103600083015261456281614526565b905091905056fea26469706673582212208820f42f30b99fc281f57388a6fd318e7a3feae626fa0b5ec9c45b2694b0fe0d64736f6c634300081c0033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
Loading...
Loading
Loading...
Loading
Loading...
Loading

Validator Index Block Amount
View All Withdrawals

Transaction Hash Block Value Eth2 PubKey Valid
View All Deposits
Loading...
Loading
[ Download: CSV Export  ]

A contract address hosts a smart contract, which is a set of code stored on the blockchain that runs when predetermined conditions are met. Learn more about addresses in our Knowledge Base.