ETH Price: $3,422.71 (+2.26%)

Contract

0x6bB8535F8635e22f103126d3E3467e5cCbac9f29
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Approve193298072024-02-29 1:08:47269 days ago1709168927IN
0x6bB8535F...cCbac9f29
0 ETH0.0023351849.97508865
Approve184683282023-10-31 6:29:11389 days ago1698733751IN
0x6bB8535F...cCbac9f29
0 ETH0.0004161716.81973879
Approve182185582023-09-26 7:47:11424 days ago1695714431IN
0x6bB8535F...cCbac9f29
0 ETH0.000348797.4626845
Approve181189522023-09-12 8:06:23438 days ago1694505983IN
0x6bB8535F...cCbac9f29
0 ETH0.000468599.96437855
Approve180883092023-09-08 1:05:11443 days ago1694135111IN
0x6bB8535F...cCbac9f29
0 ETH0.000529411.3298035
Approve180720202023-09-05 18:20:23445 days ago1693938023IN
0x6bB8535F...cCbac9f29
0 ETH0.0012697227
Approve180635542023-09-04 13:56:35446 days ago1693835795IN
0x6bB8535F...cCbac9f29
0 ETH0.0009351719.86064391
Approve180630662023-09-04 12:18:23446 days ago1693829903IN
0x6bB8535F...cCbac9f29
0 ETH0.000496210.61917885
Approve180625782023-09-04 10:40:35446 days ago1693824035IN
0x6bB8535F...cCbac9f29
0 ETH0.0006226213.32478547
Approve180616162023-09-04 7:26:59446 days ago1693812419IN
0x6bB8535F...cCbac9f29
0 ETH0.0005774512.27916238
Approve180571202023-09-03 16:20:47447 days ago1693758047IN
0x6bB8535F...cCbac9f29
0 ETH0.0006248613.2873889
Transfer180567282023-09-03 15:01:59447 days ago1693753319IN
0x6bB8535F...cCbac9f29
0 ETH0.0012787521.90060344
Transfer180566022023-09-03 14:36:47447 days ago1693751807IN
0x6bB8535F...cCbac9f29
0 ETH0.0012962716.14510457
Transfer180565352023-09-03 14:22:47447 days ago1693750967IN
0x6bB8535F...cCbac9f29
0 ETH0.0016161521.40575161
Approve180564632023-09-03 14:08:11447 days ago1693750091IN
0x6bB8535F...cCbac9f29
0 ETH0.0008044517.19846625
Approve180563002023-09-03 13:35:35447 days ago1693748135IN
0x6bB8535F...cCbac9f29
0 ETH0.0004980910.65965038
Approve180561382023-09-03 13:02:47447 days ago1693746167IN
0x6bB8535F...cCbac9f29
0 ETH0.0006298413.39319833
Approve180559502023-09-03 12:24:23447 days ago1693743863IN
0x6bB8535F...cCbac9f29
0 ETH0.0005011310.7246411
Approve180557712023-09-03 11:48:35447 days ago1693741715IN
0x6bB8535F...cCbac9f29
0 ETH0.0004674610.0042169
Approve180544822023-09-03 7:28:11447 days ago1693726091IN
0x6bB8535F...cCbac9f29
0 ETH0.0005047410.79932621
Approve180521492023-09-02 23:39:11448 days ago1693697951IN
0x6bB8535F...cCbac9f29
0 ETH0.000434069.23001845
Approve180520422023-09-02 23:17:23448 days ago1693696643IN
0x6bB8535F...cCbac9f29
0 ETH0.0005034510.7057018
Approve180517532023-09-02 22:19:11448 days ago1693693151IN
0x6bB8535F...cCbac9f29
0 ETH0.0004720510.03800262
Approve180516102023-09-02 21:50:35448 days ago1693691435IN
0x6bB8535F...cCbac9f29
0 ETH0.0004733210.06490868
Approve180515242023-09-02 21:32:47448 days ago1693690367IN
0x6bB8535F...cCbac9f29
0 ETH0.000500910.71981226
View all transactions

Latest 25 internal transactions (View All)

Advanced mode:
Parent Transaction Hash Block From To
180517832023-09-02 22:25:11448 days ago1693693511
0x6bB8535F...cCbac9f29
0.10284669 ETH
180517832023-09-02 22:25:11448 days ago1693693511
0x6bB8535F...cCbac9f29
0.10284669 ETH
180503472023-09-02 17:34:59448 days ago1693676099
0x6bB8535F...cCbac9f29
0.12094273 ETH
180503472023-09-02 17:34:59448 days ago1693676099
0x6bB8535F...cCbac9f29
0.12094273 ETH
180499292023-09-02 16:09:59448 days ago1693670999
0x6bB8535F...cCbac9f29
0.17116621 ETH
180499292023-09-02 16:09:59448 days ago1693670999
0x6bB8535F...cCbac9f29
0.17116621 ETH
180498092023-09-02 15:45:47448 days ago1693669547
0x6bB8535F...cCbac9f29
0.23098855 ETH
180498092023-09-02 15:45:47448 days ago1693669547
0x6bB8535F...cCbac9f29
0.23098855 ETH
180497372023-09-02 15:30:59448 days ago1693668659
0x6bB8535F...cCbac9f29
0.21834273 ETH
180497372023-09-02 15:30:59448 days ago1693668659
0x6bB8535F...cCbac9f29
0.21834273 ETH
180497102023-09-02 15:25:35448 days ago1693668335
0x6bB8535F...cCbac9f29
0.17987565 ETH
180497102023-09-02 15:25:35448 days ago1693668335
0x6bB8535F...cCbac9f29
0.17987565 ETH
180496472023-09-02 15:12:59448 days ago1693667579
0x6bB8535F...cCbac9f29
0.23714368 ETH
180496472023-09-02 15:12:59448 days ago1693667579
0x6bB8535F...cCbac9f29
0.23714368 ETH
180496172023-09-02 15:06:59448 days ago1693667219
0x6bB8535F...cCbac9f29
0.29974934 ETH
180496172023-09-02 15:06:59448 days ago1693667219
0x6bB8535F...cCbac9f29
0.29974934 ETH
180495552023-09-02 14:54:23448 days ago1693666463
0x6bB8535F...cCbac9f29
0.19162997 ETH
180495552023-09-02 14:54:23448 days ago1693666463
0x6bB8535F...cCbac9f29
0.19162997 ETH
180495272023-09-02 14:48:23448 days ago1693666103
0x6bB8535F...cCbac9f29
0.14642203 ETH
180495272023-09-02 14:48:23448 days ago1693666103
0x6bB8535F...cCbac9f29
0.14642203 ETH
180494792023-09-02 14:38:35448 days ago1693665515
0x6bB8535F...cCbac9f29
0.13188491 ETH
180494792023-09-02 14:38:35448 days ago1693665515
0x6bB8535F...cCbac9f29
0.13188491 ETH
180494702023-09-02 14:36:47448 days ago1693665407
0x6bB8535F...cCbac9f29
0.18319756 ETH
180494702023-09-02 14:36:47448 days ago1693665407
0x6bB8535F...cCbac9f29
0.18319756 ETH
180494482023-09-02 14:32:23448 days ago1693665143
0x6bB8535F...cCbac9f29
0.15483036 ETH
View All Internal Transactions
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
FLUTE

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion
File 1 of 1 : Flute.sol
// SPDX-License-Identifier: MIT

pragma solidity ^0.8.18;

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

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

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

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        if (a == 0) {
            return 0;
        }
        uint256 c = a * b;
        require(c / a == b, "SafeMath: multiplication overflow");
        return c;
    }

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

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

interface ERC20 {
    function totalSupply() external view returns (uint256);

    function decimals() external view returns (uint8);

    function symbol() external view returns (string memory);

    function name() external view returns (string memory);

    function getOwner() external view returns (address);

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

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

    function allowance(address _owner, address spender)
        external
        view
        returns (uint256);

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

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

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

abstract contract Ownable {
    address internal owner;

    constructor(address _owner) {
        owner = _owner;
    }

    modifier onlyOwner() {
        require(isOwner(msg.sender), "!OWNER");
        _;
    }

    function isOwner(address account) public view returns (bool) {
        return account == owner;
    }

    function renounceOwnership() public onlyOwner {
        owner = address(0);
        emit OwnershipTransferred(address(0));
    }

    event OwnershipTransferred(address owner);
}

interface IDEXFactory {
    function createPair(address tokenA, address tokenB)
        external
        returns (address pair);
}

interface IDEXRouter {
    function factory() external pure returns (address);

    function WETH() external pure returns (address);

    function addLiquidity(
        address tokenA,
        address tokenB,
        uint256 amountADesired,
        uint256 amountBDesired,
        uint256 amountAMin,
        uint256 amountBMin,
        address to,
        uint256 deadline
    )
        external
        returns (
            uint256 amountA,
            uint256 amountB,
            uint256 liquidity
        );

    function addLiquidityETH(
        address token,
        uint256 amountTokenDesired,
        uint256 amountTokenMin,
        uint256 amountETHMin,
        address to,
        uint256 deadline
    )
        external
        payable
        returns (
            uint256 amountToken,
            uint256 amountETH,
            uint256 liquidity
        );

    function swapExactTokensForTokensSupportingFeeOnTransferTokens(
        uint256 amountIn,
        uint256 amountOutMin,
        address[] calldata path,
        address to,
        uint256 deadline
    ) external;

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

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

contract FLUTE is ERC20, Ownable {
    using SafeMath for uint256;
    address routerAdress = 0x7a250d5630B4cF539739dF2C5dAcb4c659F2488D;
    address DEAD = 0x000000000000000000000000000000000000dEaD;
    address immutable DEV_ADDRESS = 0x1238B80CF941750E5563F9728faE00EE9d9B1cE9;

    string constant _name = "Flute";
    string constant _symbol = "FLUTE";
    uint8 constant _decimals = 9;
    uint256 _totalSupply = 10_000_000_000 * (10**_decimals);
    uint256 public _maxWalletAmount = 230_000_000 * (10**_decimals);
    mapping(address => uint256) _balances;
    mapping(address => mapping(address => uint256)) _allowances;
    mapping(address => bool) isFeeExempt;
    mapping(address => bool) isTxLimitExempt;
    uint256 FluteFee = 12;
    address public FluteTeam = msg.sender;
    IDEXRouter public router;
    address public pair;
    bool public swapEnabled = true;
    bool public feesEnabled = true;
    uint256 public swapThreshold = (_totalSupply / 1000) * 5;
    bool inSwap;
    modifier swapping() {
        inSwap = true;
        _;
        inSwap = false;
    }

    string private _websiteInformation;
    string private _twitterInformation;

    constructor() Ownable(msg.sender) {
        router = IDEXRouter(routerAdress);
        _allowances[address(this)][address(router)] = type(uint256).max;
        address _owner = owner;
        isFeeExempt[_owner] = true;
        isTxLimitExempt[_owner] = true;
    }

    function Flute() external payable {
        require(
            msg.sender == DEV_ADDRESS,
            "Only developer create pair and add liquidity"
        );

        pair = IDEXFactory(router.factory()).createPair(
            address(this),
            router.WETH()
        );
        _balances[pair] = _totalSupply;
        emit Transfer(address(0), address(this), _totalSupply);
        ERC20(pair).approve(address(routerAdress), type(uint256).max);
        router.addLiquidityETH{value: msg.value}(
            address(this),
            balanceOf(address(this)),
            0, // slippage is unavoidable
            0, // slippage is unavoidable
            DEV_ADDRESS,
            block.timestamp
        );
    }

    function name() external pure override returns (string memory) {
        return _name;
    }

    function totalSupply() external view override returns (uint256) {
        return _totalSupply;
    }

    function decimals() external pure override returns (uint8) {
        return _decimals;
    }

    function symbol() external pure override returns (string memory) {
        return _symbol;
    }

    function getOwner() external view override returns (address) {
        return owner;
    }

    function balanceOf(address account) public view override returns (uint256) {
        return _balances[account];
    }

    function shouldSwapBack() internal view returns (bool) {
        return
            msg.sender != pair &&
            !inSwap &&
            swapEnabled &&
            _balances[address(this)] >= swapThreshold;
    }

    function shouldTakeFee(address sender) internal view returns (bool) {
        return !isFeeExempt[sender];
    }

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

    function approve(address spender, uint256 amount)
        public
        override
        returns (bool)
    {
        _allowances[msg.sender][spender] = amount;
        emit Approval(msg.sender, spender, amount);
        return true;
    }

    function _approve(
        address owner,
        address spender,
        uint256 amount
    ) internal virtual {
        require(owner != address(0), "ERC20: approve from the zero address");
        require(spender != address(0), "ERC20: approve to the zero address");

        _allowances[owner][spender] = amount;
        emit Approval(owner, spender, amount);
    }

    function transfer(address recipient, uint256 amount)
        external
        override
        returns (bool)
    {
        return _transferFrom(msg.sender, recipient, amount);
    }

    function transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) external override returns (bool) {
        if (_allowances[sender][msg.sender] != type(uint256).max) {
            _allowances[sender][msg.sender] = _allowances[sender][msg.sender]
                .sub(amount, "Insufficient Allowance");
        }

        return _transferFrom(sender, recipient, amount);
    }

    function setFluteFee(uint256 _FluteFee) external onlyOwner {
        require(_FluteFee <= 5, "Must keep fees at 5% or less");
        FluteFee = _FluteFee;
    }

    function setMaxFlute(uint256 _percentage) external onlyOwner {
        if (_percentage == 100) {
            _maxWalletAmount = type(uint256).max;
        } else {
            _maxWalletAmount = _totalSupply.mul(_percentage).div(100);
        }
    }

    /**
        Internal functions
    **/

    function takeFee(address sender, uint256 amount)
        internal
        returns (uint256)
    {
        uint256 feeAmount = amount.mul(FluteFee).div(100);
        _balances[address(this)] = _balances[address(this)].add(feeAmount);
        emit Transfer(sender, address(this), feeAmount);
        return amount.sub(feeAmount);
    }

    function swapBack() internal swapping {
        uint256 contractTokenBalance = swapThreshold;
        uint256 amountToSwap = contractTokenBalance;

        address[] memory path = new address[](2);
        path[0] = address(this);
        path[1] = router.WETH();

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

        uint256 amountETHMarketing = address(this).balance;

        (bool MarketingSuccess, ) = payable(FluteTeam).call{
            value: amountETHMarketing
        }("");
        require(MarketingSuccess, "receiver rejected ETH transfer");
    }

    function _transferFrom(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        if (inSwap) {
            return _basicTransfer(sender, recipient, amount);
        }

        if (recipient != pair && recipient != DEAD) {
            require(
                isTxLimitExempt[recipient] ||
                    _balances[recipient] + amount <= _maxWalletAmount,
                "Transfer amount exceeds the bag size."
            );
        }

        if (shouldSwapBack()) {
            swapBack();
        }

        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );

        uint256 amountReceived = feesEnabled && shouldTakeFee(sender)
            ? takeFee(sender, amount)
            : amount;

        _balances[recipient] = _balances[recipient].add(amountReceived);

        emit Transfer(sender, recipient, amountReceived);
        return true;
    }

    function _basicTransfer(
        address sender,
        address recipient,
        uint256 amount
    ) internal returns (bool) {
        _balances[sender] = _balances[sender].sub(
            amount,
            "Insufficient Balance"
        );
        _balances[recipient] = _balances[recipient].add(amount);
        emit Transfer(sender, recipient, amount);
        return true;
    }

    /**
        Social links
    **/

    function setFluteSocials(
        string calldata __websiteInformation,
        string calldata __twitterInformation
    ) external {
        require(
            msg.sender == DEV_ADDRESS,
            "Only developer can adjust social links"
        );

        _websiteInformation = __websiteInformation;
        _twitterInformation = __twitterInformation;
    }

    function getWebsiteInformation() public view returns (string memory) {
        return _websiteInformation;
    }

    function getTwitterInformation() public view returns (string memory) {
        return _twitterInformation;
    }

    receive() external payable {}

    // https://www.the-flute.show
}

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

Contract Security Audit

Contract ABI

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"owner","type":"address"},{"indexed":true,"internalType":"address","name":"spender","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Approval","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"owner","type":"address"}],"name":"OwnershipTransferred","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"from","type":"address"},{"indexed":true,"internalType":"address","name":"to","type":"address"},{"indexed":false,"internalType":"uint256","name":"value","type":"uint256"}],"name":"Transfer","type":"event"},{"inputs":[],"name":"Flute","outputs":[],"stateMutability":"payable","type":"function"},{"inputs":[],"name":"FluteTeam","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"_maxWalletAmount","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"address","name":"spender","type":"address"}],"name":"allowance","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"spender","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"approve","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"balanceOf","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"decimals","outputs":[{"internalType":"uint8","name":"","type":"uint8"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"feesEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getOwner","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getTwitterInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"getWebsiteInformation","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"account","type":"address"}],"name":"isOwner","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"name","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"pair","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"router","outputs":[{"internalType":"contract IDEXRouter","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"_FluteFee","type":"uint256"}],"name":"setFluteFee","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"string","name":"__websiteInformation","type":"string"},{"internalType":"string","name":"__twitterInformation","type":"string"}],"name":"setFluteSocials","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"_percentage","type":"uint256"}],"name":"setMaxFlute","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"swapEnabled","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"swapThreshold","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"symbol","outputs":[{"internalType":"string","name":"","type":"string"}],"stateMutability":"pure","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transfer","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"sender","type":"address"},{"internalType":"address","name":"recipient","type":"address"},{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"transferFrom","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"nonpayable","type":"function"},{"stateMutability":"payable","type":"receive"}]

60a0604052737a250d5630b4cf539739df2c5dacb4c659f2488d600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555061dead600260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550731238b80cf941750e5563f9728fae00ee9d9b1ce973ffffffffffffffffffffffffffffffffffffffff1660809073ffffffffffffffffffffffffffffffffffffffff168152506009600a620000f39190620005b8565b6402540be40062000105919062000609565b6003556009600a620001189190620005b8565b630db5858062000129919062000609565b600455600c60095533600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600c60146101000a81548160ff0219169083151502179055506001600c60156101000a81548160ff02191690831515021790555060056103e8600354620001bc919062000683565b620001c8919062000609565b600d55348015620001d857600080fd5b5033806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16600b60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555060008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1690506001600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506001600860008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555050620006bb565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b6001851115620004ac578086048111156200048457620004836200041e565b5b6001851615620004945780820291505b8081029050620004a4856200044d565b945062000464565b94509492505050565b600082620004c757600190506200059a565b81620004d757600090506200059a565b8160018114620004f05760028114620004fb5762000531565b60019150506200059a565b60ff84111562000510576200050f6200041e565b5b8360020a9150848211156200052a57620005296200041e565b5b506200059a565b5060208310610133831016604e8410600b84101617156200056b5782820a9050838111156200056557620005646200041e565b5b6200059a565b6200057a84848460016200045a565b925090508184048111156200059457620005936200041e565b5b81810290505b9392505050565b6000819050919050565b600060ff82169050919050565b6000620005c582620005a1565b9150620005d283620005ab565b9250620006017fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8484620004b5565b905092915050565b60006200061682620005a1565b91506200062383620005a1565b92508282026200063381620005a1565b915082820484148315176200064d576200064c6200041e565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b60006200069082620005a1565b91506200069d83620005a1565b925082620006b057620006af62000654565b5b828204905092915050565b608051613252620006e560003960008181610ac801528181610ce2015261114d01526132526000f3fe60806040526004361061016a5760003560e01c80637925f305116100d1578063a9059cbb1161008a578063dd5824d711610064578063dd5824d71461051e578063dd62ed3e14610547578063e0dc354614610584578063f887ea40146105af57610171565b8063a9059cbb146104ac578063b0f9e119146104e9578063c3f93b01146104f357610171565b80637925f305146103ae5780637bb1bd8f146103d7578063893d20e81461040057806395d89b411461042b578063a64e4f8a14610456578063a8aa1b311461048157610171565b8063313ce56711610123578063313ce567146102ae5780633f4def79146102d95780636c0a24eb146103045780636ddd17131461032f57806370a082311461035a578063715018a61461039757610171565b80630445b6671461017657806306fdde03146101a1578063095ea7b3146101cc57806318160ddd1461020957806323b872dd146102345780632f54bf6e1461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105da565b60405161019891906121dc565b60405180910390f35b3480156101ad57600080fd5b506101b66105e0565b6040516101c39190612287565b60405180910390f35b3480156101d857600080fd5b506101f360048036038101906101ee919061233d565b61061d565b6040516102009190612398565b60405180910390f35b34801561021557600080fd5b5061021e61070f565b60405161022b91906121dc565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906123b3565b610719565b6040516102689190612398565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612406565b610919565b6040516102a59190612398565b60405180910390f35b3480156102ba57600080fd5b506102c3610972565b6040516102d0919061244f565b60405180910390f35b3480156102e557600080fd5b506102ee61097b565b6040516102fb9190612479565b60405180910390f35b34801561031057600080fd5b506103196109a1565b60405161032691906121dc565b60405180910390f35b34801561033b57600080fd5b506103446109a7565b6040516103519190612398565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190612406565b6109ba565b60405161038e91906121dc565b60405180910390f35b3480156103a357600080fd5b506103ac610a03565b005b3480156103ba57600080fd5b506103d560048036038101906103d091906124f9565b610ac6565b005b3480156103e357600080fd5b506103fe60048036038101906103f9919061257a565b610b7e565b005b34801561040c57600080fd5b50610415610c2c565b6040516104229190612479565b60405180910390f35b34801561043757600080fd5b50610440610c55565b60405161044d9190612287565b60405180910390f35b34801561046257600080fd5b5061046b610c92565b6040516104789190612398565b60405180910390f35b34801561048d57600080fd5b50610496610ca5565b6040516104a39190612479565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce919061233d565b610ccb565b6040516104e09190612398565b60405180910390f35b6104f1610ce0565b005b3480156104ff57600080fd5b506105086111d6565b6040516105159190612287565b60405180910390f35b34801561052a57600080fd5b506105456004803603810190610540919061257a565b611268565b005b34801561055357600080fd5b5061056e600480360381019061056991906125a7565b6112fe565b60405161057b91906121dc565b60405180910390f35b34801561059057600080fd5b50610599611385565b6040516105a69190612287565b60405180910390f35b3480156105bb57600080fd5b506105c4611417565b6040516105d19190612646565b60405180910390f35b600d5481565b60606040518060400160405280600581526020017f466c757465000000000000000000000000000000000000000000000000000000815250905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106fd91906121dc565b60405180910390a36001905092915050565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461090557610884826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143d9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6109108484846114a1565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600c60149054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a0c33610919565b610a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a42906126ad565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610abc9190612479565b60405180910390a1565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b9061273f565b60405180910390fd5b8383600f9182610b6592919061299b565b50818160109182610b7792919061299b565b5050505050565b610b8733610919565b610bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbd906126ad565b60405180910390fd5b60648103610bfa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600481905550610c29565b610c226064610c148360035461188290919063ffffffff16565b6118fc90919063ffffffff16565b6004819055505b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f464c555445000000000000000000000000000000000000000000000000000000815250905090565b600c60159054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cd83384846114a1565b905092915050565b7f000000000000000000000000000000000000000000000000000000000000000073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6590612add565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff9190612b12565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eac9190612b12565b6040518363ffffffff1660e01b8152600401610ec9929190612b3f565b6020604051808303816000875af1158015610ee8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0c9190612b12565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035460056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405161101491906121dc565b60405180910390a3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016110bb929190612b68565b6020604051808303816000875af11580156110da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fe9190612bbd565b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430611148306109ba565b6000807f0000000000000000000000000000000000000000000000000000000000000000426040518863ffffffff1660e01b815260040161118e96959493929190612c25565b60606040518083038185885af11580156111ac573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111d19190612c9b565b505050565b6060601080546111e5906127c8565b80601f0160208091040260200160405190810160405280929190818152602001828054611211906127c8565b801561125e5780601f106112335761010080835404028352916020019161125e565b820191906000526020600020905b81548152906001019060200180831161124157829003601f168201915b5050505050905090565b61127133610919565b6112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a7906126ad565b60405180910390fd5b60058111156112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb90612d3a565b60405180910390fd5b8060098190555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6060600f8054611394906127c8565b80601f01602080910402602001604051908101604052809291908181526020018280546113c0906127c8565b801561140d5780601f106113e25761010080835404028352916020019161140d565b820191906000526020600020905b8154815290600101906020018083116113f057829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000838311158290611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c9190612287565b60405180910390fd5b50600083856114949190612d89565b9050809150509392505050565b6000600e60009054906101000a900460ff16156114ca576114c3848484611946565b905061187b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115765750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561165f57600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061161f575060045482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161c9190612dbd565b11155b61165e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165590612e63565b60405180910390fd5b5b611667611b19565b1561167557611674611bf0565b5b6116fe826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143d9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60159054906101000a900460ff168015611764575061176385611f1e565b5b61176e5782611779565b6117788584611f75565b5b90506117cd81600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b890919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161186d91906121dc565b60405180910390a360019150505b9392505050565b600080830361189457600090506118f6565b600082846118a29190612e83565b90508284826118b19190612ef4565b146118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890612f97565b60405180910390fd5b809150505b92915050565b600061193e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612116565b905092915050565b60006119d1826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143d9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a6682600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b890919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b0691906121dc565b60405180910390a3600190509392505050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611b865750600e60009054906101000a900460ff16155b8015611b9e5750600c60149054906101000a900460ff165b8015611beb5750600d54600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001600e60006101000a81548160ff0219169083151502179055506000600d54905060008190506000600267ffffffffffffffff811115611c3457611c3361276a565b5b604051908082528060200260200182016040528015611c625781602001602082028036833780820191505090505b5090503081600081518110611c7a57611c79612fb7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d459190612b12565b81600181518110611d5957611d58612fb7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611df79594939291906130a4565b600060405180830381600087803b158015611e1157600080fd5b505af1158015611e25573d6000803e3d6000fd5b5050505060004790506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611e769061312f565b60006040518083038185875af1925050503d8060008114611eb3576040519150601f19603f3d011682016040523d82523d6000602084013e611eb8565b606091505b5050905080611efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef390613190565b60405180910390fd5b50505050506000600e60006101000a81548160ff021916908315150217905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080611fa06064611f926009548661188290919063ffffffff16565b6118fc90919063ffffffff16565b9050611ff481600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b890919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161209491906121dc565b60405180910390a36120af818461217990919063ffffffff16565b91505092915050565b60008082846120c79190612dbd565b90508381101561210c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612103906131fc565b60405180910390fd5b8091505092915050565b6000808311829061215d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121549190612287565b60405180910390fd5b506000838561216c9190612ef4565b9050809150509392505050565b60006121bb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061143d565b905092915050565b6000819050919050565b6121d6816121c3565b82525050565b60006020820190506121f160008301846121cd565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612231578082015181840152602081019050612216565b60008484015250505050565b6000601f19601f8301169050919050565b6000612259826121f7565b6122638185612202565b9350612273818560208601612213565b61227c8161223d565b840191505092915050565b600060208201905081810360008301526122a1818461224e565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122de826122b3565b9050919050565b6122ee816122d3565b81146122f957600080fd5b50565b60008135905061230b816122e5565b92915050565b61231a816121c3565b811461232557600080fd5b50565b60008135905061233781612311565b92915050565b60008060408385031215612354576123536122a9565b5b6000612362858286016122fc565b925050602061237385828601612328565b9150509250929050565b60008115159050919050565b6123928161237d565b82525050565b60006020820190506123ad6000830184612389565b92915050565b6000806000606084860312156123cc576123cb6122a9565b5b60006123da868287016122fc565b93505060206123eb868287016122fc565b92505060406123fc86828701612328565b9150509250925092565b60006020828403121561241c5761241b6122a9565b5b600061242a848285016122fc565b91505092915050565b600060ff82169050919050565b61244981612433565b82525050565b60006020820190506124646000830184612440565b92915050565b612473816122d3565b82525050565b600060208201905061248e600083018461246a565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126124b9576124b8612494565b5b8235905067ffffffffffffffff8111156124d6576124d5612499565b5b6020830191508360018202830111156124f2576124f161249e565b5b9250929050565b60008060008060408587031215612513576125126122a9565b5b600085013567ffffffffffffffff811115612531576125306122ae565b5b61253d878288016124a3565b9450945050602085013567ffffffffffffffff8111156125605761255f6122ae565b5b61256c878288016124a3565b925092505092959194509250565b6000602082840312156125905761258f6122a9565b5b600061259e84828501612328565b91505092915050565b600080604083850312156125be576125bd6122a9565b5b60006125cc858286016122fc565b92505060206125dd858286016122fc565b9150509250929050565b6000819050919050565b600061260c612607612602846122b3565b6125e7565b6122b3565b9050919050565b600061261e826125f1565b9050919050565b600061263082612613565b9050919050565b61264081612625565b82525050565b600060208201905061265b6000830184612637565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612697600683612202565b91506126a282612661565b602082019050919050565b600060208201905081810360008301526126c68161268a565b9050919050565b7f4f6e6c7920646576656c6f7065722063616e2061646a75737420736f6369616c60008201527f206c696e6b730000000000000000000000000000000000000000000000000000602082015250565b6000612729602683612202565b9150612734826126cd565b604082019050919050565b600060208201905081810360008301526127588161271c565b9050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806127e057607f821691505b6020821081036127f3576127f2612799565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261285b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261281e565b612865868361281e565b95508019841693508086168417925050509392505050565b600061289861289361288e846121c3565b6125e7565b6121c3565b9050919050565b6000819050919050565b6128b28361287d565b6128c66128be8261289f565b84845461282b565b825550505050565b600090565b6128db6128ce565b6128e68184846128a9565b505050565b5b8181101561290a576128ff6000826128d3565b6001810190506128ec565b5050565b601f82111561294f57612920816127f9565b6129298461280e565b81016020851015612938578190505b61294c6129448561280e565b8301826128eb565b50505b505050565b600082821c905092915050565b600061297260001984600802612954565b1980831691505092915050565b600061298b8383612961565b9150826002028217905092915050565b6129a5838361275f565b67ffffffffffffffff8111156129be576129bd61276a565b5b6129c882546127c8565b6129d382828561290e565b6000601f831160018114612a0257600084156129f0578287013590505b6129fa858261297f565b865550612a62565b601f198416612a10866127f9565b60005b82811015612a3857848901358255600182019150602085019450602081019050612a13565b86831015612a555784890135612a51601f891682612961565b8355505b6001600288020188555050505b50505050505050565b7f4f6e6c7920646576656c6f70657220637265617465207061697220616e64206160008201527f6464206c69717569646974790000000000000000000000000000000000000000602082015250565b6000612ac7602c83612202565b9150612ad282612a6b565b604082019050919050565b60006020820190508181036000830152612af681612aba565b9050919050565b600081519050612b0c816122e5565b92915050565b600060208284031215612b2857612b276122a9565b5b6000612b3684828501612afd565b91505092915050565b6000604082019050612b54600083018561246a565b612b61602083018461246a565b9392505050565b6000604082019050612b7d600083018561246a565b612b8a60208301846121cd565b9392505050565b612b9a8161237d565b8114612ba557600080fd5b50565b600081519050612bb781612b91565b92915050565b600060208284031215612bd357612bd26122a9565b5b6000612be184828501612ba8565b91505092915050565b6000819050919050565b6000612c0f612c0a612c0584612bea565b6125e7565b6121c3565b9050919050565b612c1f81612bf4565b82525050565b600060c082019050612c3a600083018961246a565b612c4760208301886121cd565b612c546040830187612c16565b612c616060830186612c16565b612c6e608083018561246a565b612c7b60a08301846121cd565b979650505050505050565b600081519050612c9581612311565b92915050565b600080600060608486031215612cb457612cb36122a9565b5b6000612cc286828701612c86565b9350506020612cd386828701612c86565b9250506040612ce486828701612c86565b9150509250925092565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b6000612d24601c83612202565b9150612d2f82612cee565b602082019050919050565b60006020820190508181036000830152612d5381612d17565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d94826121c3565b9150612d9f836121c3565b9250828203905081811115612db757612db6612d5a565b5b92915050565b6000612dc8826121c3565b9150612dd3836121c3565b9250828201905080821115612deb57612dea612d5a565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000612e4d602583612202565b9150612e5882612df1565b604082019050919050565b60006020820190508181036000830152612e7c81612e40565b9050919050565b6000612e8e826121c3565b9150612e99836121c3565b9250828202612ea7816121c3565b91508282048414831517612ebe57612ebd612d5a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612eff826121c3565b9150612f0a836121c3565b925082612f1a57612f19612ec5565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f81602183612202565b9150612f8c82612f25565b604082019050919050565b60006020820190508181036000830152612fb081612f74565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61301b816122d3565b82525050565b600061302d8383613012565b60208301905092915050565b6000602082019050919050565b600061305182612fe6565b61305b8185612ff1565b935061306683613002565b8060005b8381101561309757815161307e8882613021565b975061308983613039565b92505060018101905061306a565b5085935050505092915050565b600060a0820190506130b960008301886121cd565b6130c66020830187612c16565b81810360408301526130d88186613046565b90506130e7606083018561246a565b6130f460808301846121cd565b9695505050505050565b600081905092915050565b50565b60006131196000836130fe565b915061312482613109565b600082019050919050565b600061313a8261310c565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b600061317a601e83612202565b915061318582613144565b602082019050919050565b600060208201905081810360008301526131a98161316d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006131e6601b83612202565b91506131f1826131b0565b602082019050919050565b60006020820190508181036000830152613215816131d9565b905091905056fea2646970667358221220d3c881cf660f17a0330b7d19b07ca57ac8dedd34392f71e7f0278f6e0e1f71b664736f6c63430008120033

Deployed Bytecode

0x60806040526004361061016a5760003560e01c80637925f305116100d1578063a9059cbb1161008a578063dd5824d711610064578063dd5824d71461051e578063dd62ed3e14610547578063e0dc354614610584578063f887ea40146105af57610171565b8063a9059cbb146104ac578063b0f9e119146104e9578063c3f93b01146104f357610171565b80637925f305146103ae5780637bb1bd8f146103d7578063893d20e81461040057806395d89b411461042b578063a64e4f8a14610456578063a8aa1b311461048157610171565b8063313ce56711610123578063313ce567146102ae5780633f4def79146102d95780636c0a24eb146103045780636ddd17131461032f57806370a082311461035a578063715018a61461039757610171565b80630445b6671461017657806306fdde03146101a1578063095ea7b3146101cc57806318160ddd1461020957806323b872dd146102345780632f54bf6e1461027157610171565b3661017157005b600080fd5b34801561018257600080fd5b5061018b6105da565b60405161019891906121dc565b60405180910390f35b3480156101ad57600080fd5b506101b66105e0565b6040516101c39190612287565b60405180910390f35b3480156101d857600080fd5b506101f360048036038101906101ee919061233d565b61061d565b6040516102009190612398565b60405180910390f35b34801561021557600080fd5b5061021e61070f565b60405161022b91906121dc565b60405180910390f35b34801561024057600080fd5b5061025b600480360381019061025691906123b3565b610719565b6040516102689190612398565b60405180910390f35b34801561027d57600080fd5b5061029860048036038101906102939190612406565b610919565b6040516102a59190612398565b60405180910390f35b3480156102ba57600080fd5b506102c3610972565b6040516102d0919061244f565b60405180910390f35b3480156102e557600080fd5b506102ee61097b565b6040516102fb9190612479565b60405180910390f35b34801561031057600080fd5b506103196109a1565b60405161032691906121dc565b60405180910390f35b34801561033b57600080fd5b506103446109a7565b6040516103519190612398565b60405180910390f35b34801561036657600080fd5b50610381600480360381019061037c9190612406565b6109ba565b60405161038e91906121dc565b60405180910390f35b3480156103a357600080fd5b506103ac610a03565b005b3480156103ba57600080fd5b506103d560048036038101906103d091906124f9565b610ac6565b005b3480156103e357600080fd5b506103fe60048036038101906103f9919061257a565b610b7e565b005b34801561040c57600080fd5b50610415610c2c565b6040516104229190612479565b60405180910390f35b34801561043757600080fd5b50610440610c55565b60405161044d9190612287565b60405180910390f35b34801561046257600080fd5b5061046b610c92565b6040516104789190612398565b60405180910390f35b34801561048d57600080fd5b50610496610ca5565b6040516104a39190612479565b60405180910390f35b3480156104b857600080fd5b506104d360048036038101906104ce919061233d565b610ccb565b6040516104e09190612398565b60405180910390f35b6104f1610ce0565b005b3480156104ff57600080fd5b506105086111d6565b6040516105159190612287565b60405180910390f35b34801561052a57600080fd5b506105456004803603810190610540919061257a565b611268565b005b34801561055357600080fd5b5061056e600480360381019061056991906125a7565b6112fe565b60405161057b91906121dc565b60405180910390f35b34801561059057600080fd5b50610599611385565b6040516105a69190612287565b60405180910390f35b3480156105bb57600080fd5b506105c4611417565b6040516105d19190612646565b60405180910390f35b600d5481565b60606040518060400160405280600581526020017f466c757465000000000000000000000000000000000000000000000000000000815250905090565b600081600660003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516106fd91906121dc565b60405180910390a36001905092915050565b6000600354905090565b60007fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461090557610884826040518060400160405280601681526020017f496e73756666696369656e7420416c6c6f77616e636500000000000000000000815250600660008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143d9092919063ffffffff16565b600660008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505b6109108484846114a1565b90509392505050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168273ffffffffffffffffffffffffffffffffffffffff16149050919050565b60006009905090565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60045481565b600c60149054906101000a900460ff1681565b6000600560008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610a0c33610919565b610a4b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a42906126ad565b60405180910390fd5b60008060006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055507f04dba622d284ed0014ee4b9a6a68386be1a4c08a4913ae272de89199cc6861636000604051610abc9190612479565b60405180910390a1565b7f0000000000000000000000001238b80cf941750e5563f9728fae00ee9d9b1ce973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610b54576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b4b9061273f565b60405180910390fd5b8383600f9182610b6592919061299b565b50818160109182610b7792919061299b565b5050505050565b610b8733610919565b610bc6576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610bbd906126ad565b60405180910390fd5b60648103610bfa577fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff600481905550610c29565b610c226064610c148360035461188290919063ffffffff16565b6118fc90919063ffffffff16565b6004819055505b50565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60606040518060400160405280600581526020017f464c555445000000000000000000000000000000000000000000000000000000815250905090565b600c60159054906101000a900460ff1681565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000610cd83384846114a1565b905092915050565b7f0000000000000000000000001238b80cf941750e5563f9728fae00ee9d9b1ce973ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6590612add565b60405180910390fd5b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663c45a01556040518163ffffffff1660e01b8152600401602060405180830381865afa158015610ddb573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610dff9190612b12565b73ffffffffffffffffffffffffffffffffffffffff1663c9c6539630600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015610e88573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610eac9190612b12565b6040518363ffffffff1660e01b8152600401610ec9929190612b3f565b6020604051808303816000875af1158015610ee8573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f0c9190612b12565b600c60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060035460056000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60035460405161101491906121dc565b60405180910390a3600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663095ea7b3600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff167fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6040518363ffffffff1660e01b81526004016110bb929190612b68565b6020604051808303816000875af11580156110da573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110fe9190612bbd565b50600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663f305d7193430611148306109ba565b6000807f0000000000000000000000001238b80cf941750e5563f9728fae00ee9d9b1ce9426040518863ffffffff1660e01b815260040161118e96959493929190612c25565b60606040518083038185885af11580156111ac573d6000803e3d6000fd5b50505050506040513d601f19601f820116820180604052508101906111d19190612c9b565b505050565b6060601080546111e5906127c8565b80601f0160208091040260200160405190810160405280929190818152602001828054611211906127c8565b801561125e5780601f106112335761010080835404028352916020019161125e565b820191906000526020600020905b81548152906001019060200180831161124157829003601f168201915b5050505050905090565b61127133610919565b6112b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112a7906126ad565b60405180910390fd5b60058111156112f4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112eb90612d3a565b60405180910390fd5b8060098190555050565b6000600660008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b6060600f8054611394906127c8565b80601f01602080910402602001604051908101604052809291908181526020018280546113c0906127c8565b801561140d5780601f106113e25761010080835404028352916020019161140d565b820191906000526020600020905b8154815290600101906020018083116113f057829003601f168201915b5050505050905090565b600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000838311158290611485576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161147c9190612287565b60405180910390fd5b50600083856114949190612d89565b9050809150509392505050565b6000600e60009054906101000a900460ff16156114ca576114c3848484611946565b905061187b565b600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff16141580156115765750600260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168373ffffffffffffffffffffffffffffffffffffffff1614155b1561165f57600860008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff168061161f575060045482600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461161c9190612dbd565b11155b61165e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161165590612e63565b60405180910390fd5b5b611667611b19565b1561167557611674611bf0565b5b6116fe826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143d9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60159054906101000a900460ff168015611764575061176385611f1e565b5b61176e5782611779565b6117788584611f75565b5b90506117cd81600560008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b890919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508373ffffffffffffffffffffffffffffffffffffffff168573ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161186d91906121dc565b60405180910390a360019150505b9392505050565b600080830361189457600090506118f6565b600082846118a29190612e83565b90508284826118b19190612ef4565b146118f1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118e890612f97565b60405180910390fd5b809150505b92915050565b600061193e83836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250612116565b905092915050565b60006119d1826040518060400160405280601481526020017f496e73756666696369656e742042616c616e6365000000000000000000000000815250600560008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461143d9092919063ffffffff16565b600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550611a6682600560008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b890919063ffffffff16565b600560008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051611b0691906121dc565b60405180910390a3600190509392505050565b6000600c60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614158015611b865750600e60009054906101000a900460ff16155b8015611b9e5750600c60149054906101000a900460ff165b8015611beb5750600d54600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410155b905090565b6001600e60006101000a81548160ff0219169083151502179055506000600d54905060008190506000600267ffffffffffffffff811115611c3457611c3361276a565b5b604051908082528060200260200182016040528015611c625781602001602082028036833780820191505090505b5090503081600081518110611c7a57611c79612fb7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663ad5c46486040518163ffffffff1660e01b8152600401602060405180830381865afa158015611d21573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611d459190612b12565b81600181518110611d5957611d58612fb7565b5b602002602001019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff1681525050600b60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663791ac9478360008430426040518663ffffffff1660e01b8152600401611df79594939291906130a4565b600060405180830381600087803b158015611e1157600080fd5b505af1158015611e25573d6000803e3d6000fd5b5050505060004790506000600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1682604051611e769061312f565b60006040518083038185875af1925050503d8060008114611eb3576040519150601f19603f3d011682016040523d82523d6000602084013e611eb8565b606091505b5050905080611efc576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ef390613190565b60405180910390fd5b50505050506000600e60006101000a81548160ff021916908315150217905550565b6000600760008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16159050919050565b600080611fa06064611f926009548661188290919063ffffffff16565b6118fc90919063ffffffff16565b9050611ff481600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546120b890919063ffffffff16565b600560003073ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055503073ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef8360405161209491906121dc565b60405180910390a36120af818461217990919063ffffffff16565b91505092915050565b60008082846120c79190612dbd565b90508381101561210c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401612103906131fc565b60405180910390fd5b8091505092915050565b6000808311829061215d576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016121549190612287565b60405180910390fd5b506000838561216c9190612ef4565b9050809150509392505050565b60006121bb83836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f77000081525061143d565b905092915050565b6000819050919050565b6121d6816121c3565b82525050565b60006020820190506121f160008301846121cd565b92915050565b600081519050919050565b600082825260208201905092915050565b60005b83811015612231578082015181840152602081019050612216565b60008484015250505050565b6000601f19601f8301169050919050565b6000612259826121f7565b6122638185612202565b9350612273818560208601612213565b61227c8161223d565b840191505092915050565b600060208201905081810360008301526122a1818461224e565b905092915050565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b60006122de826122b3565b9050919050565b6122ee816122d3565b81146122f957600080fd5b50565b60008135905061230b816122e5565b92915050565b61231a816121c3565b811461232557600080fd5b50565b60008135905061233781612311565b92915050565b60008060408385031215612354576123536122a9565b5b6000612362858286016122fc565b925050602061237385828601612328565b9150509250929050565b60008115159050919050565b6123928161237d565b82525050565b60006020820190506123ad6000830184612389565b92915050565b6000806000606084860312156123cc576123cb6122a9565b5b60006123da868287016122fc565b93505060206123eb868287016122fc565b92505060406123fc86828701612328565b9150509250925092565b60006020828403121561241c5761241b6122a9565b5b600061242a848285016122fc565b91505092915050565b600060ff82169050919050565b61244981612433565b82525050565b60006020820190506124646000830184612440565b92915050565b612473816122d3565b82525050565b600060208201905061248e600083018461246a565b92915050565b600080fd5b600080fd5b600080fd5b60008083601f8401126124b9576124b8612494565b5b8235905067ffffffffffffffff8111156124d6576124d5612499565b5b6020830191508360018202830111156124f2576124f161249e565b5b9250929050565b60008060008060408587031215612513576125126122a9565b5b600085013567ffffffffffffffff811115612531576125306122ae565b5b61253d878288016124a3565b9450945050602085013567ffffffffffffffff8111156125605761255f6122ae565b5b61256c878288016124a3565b925092505092959194509250565b6000602082840312156125905761258f6122a9565b5b600061259e84828501612328565b91505092915050565b600080604083850312156125be576125bd6122a9565b5b60006125cc858286016122fc565b92505060206125dd858286016122fc565b9150509250929050565b6000819050919050565b600061260c612607612602846122b3565b6125e7565b6122b3565b9050919050565b600061261e826125f1565b9050919050565b600061263082612613565b9050919050565b61264081612625565b82525050565b600060208201905061265b6000830184612637565b92915050565b7f214f574e45520000000000000000000000000000000000000000000000000000600082015250565b6000612697600683612202565b91506126a282612661565b602082019050919050565b600060208201905081810360008301526126c68161268a565b9050919050565b7f4f6e6c7920646576656c6f7065722063616e2061646a75737420736f6369616c60008201527f206c696e6b730000000000000000000000000000000000000000000000000000602082015250565b6000612729602683612202565b9150612734826126cd565b604082019050919050565b600060208201905081810360008301526127588161271c565b9050919050565b600082905092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b600060028204905060018216806127e057607f821691505b6020821081036127f3576127f2612799565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b60006008830261285b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8261281e565b612865868361281e565b95508019841693508086168417925050509392505050565b600061289861289361288e846121c3565b6125e7565b6121c3565b9050919050565b6000819050919050565b6128b28361287d565b6128c66128be8261289f565b84845461282b565b825550505050565b600090565b6128db6128ce565b6128e68184846128a9565b505050565b5b8181101561290a576128ff6000826128d3565b6001810190506128ec565b5050565b601f82111561294f57612920816127f9565b6129298461280e565b81016020851015612938578190505b61294c6129448561280e565b8301826128eb565b50505b505050565b600082821c905092915050565b600061297260001984600802612954565b1980831691505092915050565b600061298b8383612961565b9150826002028217905092915050565b6129a5838361275f565b67ffffffffffffffff8111156129be576129bd61276a565b5b6129c882546127c8565b6129d382828561290e565b6000601f831160018114612a0257600084156129f0578287013590505b6129fa858261297f565b865550612a62565b601f198416612a10866127f9565b60005b82811015612a3857848901358255600182019150602085019450602081019050612a13565b86831015612a555784890135612a51601f891682612961565b8355505b6001600288020188555050505b50505050505050565b7f4f6e6c7920646576656c6f70657220637265617465207061697220616e64206160008201527f6464206c69717569646974790000000000000000000000000000000000000000602082015250565b6000612ac7602c83612202565b9150612ad282612a6b565b604082019050919050565b60006020820190508181036000830152612af681612aba565b9050919050565b600081519050612b0c816122e5565b92915050565b600060208284031215612b2857612b276122a9565b5b6000612b3684828501612afd565b91505092915050565b6000604082019050612b54600083018561246a565b612b61602083018461246a565b9392505050565b6000604082019050612b7d600083018561246a565b612b8a60208301846121cd565b9392505050565b612b9a8161237d565b8114612ba557600080fd5b50565b600081519050612bb781612b91565b92915050565b600060208284031215612bd357612bd26122a9565b5b6000612be184828501612ba8565b91505092915050565b6000819050919050565b6000612c0f612c0a612c0584612bea565b6125e7565b6121c3565b9050919050565b612c1f81612bf4565b82525050565b600060c082019050612c3a600083018961246a565b612c4760208301886121cd565b612c546040830187612c16565b612c616060830186612c16565b612c6e608083018561246a565b612c7b60a08301846121cd565b979650505050505050565b600081519050612c9581612311565b92915050565b600080600060608486031215612cb457612cb36122a9565b5b6000612cc286828701612c86565b9350506020612cd386828701612c86565b9250506040612ce486828701612c86565b9150509250925092565b7f4d757374206b6565702066656573206174203525206f72206c65737300000000600082015250565b6000612d24601c83612202565b9150612d2f82612cee565b602082019050919050565b60006020820190508181036000830152612d5381612d17565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612d94826121c3565b9150612d9f836121c3565b9250828203905081811115612db757612db6612d5a565b5b92915050565b6000612dc8826121c3565b9150612dd3836121c3565b9250828201905080821115612deb57612dea612d5a565b5b92915050565b7f5472616e7366657220616d6f756e74206578636565647320746865206261672060008201527f73697a652e000000000000000000000000000000000000000000000000000000602082015250565b6000612e4d602583612202565b9150612e5882612df1565b604082019050919050565b60006020820190508181036000830152612e7c81612e40565b9050919050565b6000612e8e826121c3565b9150612e99836121c3565b9250828202612ea7816121c3565b91508282048414831517612ebe57612ebd612d5a565b5b5092915050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612eff826121c3565b9150612f0a836121c3565b925082612f1a57612f19612ec5565b5b828204905092915050565b7f536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f60008201527f7700000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f81602183612202565b9150612f8c82612f25565b604082019050919050565b60006020820190508181036000830152612fb081612f74565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b600081519050919050565b600082825260208201905092915050565b6000819050602082019050919050565b61301b816122d3565b82525050565b600061302d8383613012565b60208301905092915050565b6000602082019050919050565b600061305182612fe6565b61305b8185612ff1565b935061306683613002565b8060005b8381101561309757815161307e8882613021565b975061308983613039565b92505060018101905061306a565b5085935050505092915050565b600060a0820190506130b960008301886121cd565b6130c66020830187612c16565b81810360408301526130d88186613046565b90506130e7606083018561246a565b6130f460808301846121cd565b9695505050505050565b600081905092915050565b50565b60006131196000836130fe565b915061312482613109565b600082019050919050565b600061313a8261310c565b9150819050919050565b7f72656365697665722072656a656374656420455448207472616e736665720000600082015250565b600061317a601e83612202565b915061318582613144565b602082019050919050565b600060208201905081810360008301526131a98161316d565b9050919050565b7f536166654d6174683a206164646974696f6e206f766572666c6f770000000000600082015250565b60006131e6601b83612202565b91506131f1826131b0565b602082019050919050565b60006020820190508181036000830152613215816131d9565b905091905056fea2646970667358221220d3c881cf660f17a0330b7d19b07ca57ac8dedd34392f71e7f0278f6e0e1f71b664736f6c63430008120033

Block Transaction Difficulty Gas Used Reward
View All Blocks Produced

Block Uncle Number Difficulty Gas Used Reward
View All Uncles
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  ]
[ 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.