ETH Price: $2,627.75 (+1.27%)
Gas: 1.62 Gwei

Contract

0xc98aF33701C19f8a905030B03b2BfBFb64dA0B29
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

More Info

Private Name Tags

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Reset183916472023-10-20 12:50:59307 days ago1697806259IN
0xc98aF337...b64dA0B29
0 ETH0.0007858113.89520885
Compound183916142023-10-20 12:44:23307 days ago1697805863IN
0xc98aF337...b64dA0B29
0 ETH0.0018034215.53160986
Withdraw183916072023-10-20 12:42:59307 days ago1697805779IN
0xc98aF337...b64dA0B29
0 ETH0.0014362316.65040678
Compound183916032023-10-20 12:42:11307 days ago1697805731IN
0xc98aF337...b64dA0B29
0 ETH0.00207817.89642642
Compound183914892023-10-20 12:18:59307 days ago1697804339IN
0xc98aF337...b64dA0B29
0 ETH0.001156719.96196957
Withdraw183913822023-10-20 11:57:23307 days ago1697803043IN
0xc98aF337...b64dA0B29
0 ETH0.0011937411.68942698
Withdraw183913712023-10-20 11:55:11307 days ago1697802911IN
0xc98aF337...b64dA0B29
0 ETH0.0010196811.8238887
Claim Reward183913672023-10-20 11:54:23307 days ago1697802863IN
0xc98aF337...b64dA0B29
0 ETH0.0015464911.68374289
Stake183912862023-10-20 11:37:59307 days ago1697801879IN
0xc98aF337...b64dA0B29
0 ETH0.0008770511.4496292
Stake183912802023-10-20 11:36:47307 days ago1697801807IN
0xc98aF337...b64dA0B29
0 ETH0.0015166111.8144237
Claim Reward183912782023-10-20 11:36:23307 days ago1697801783IN
0xc98aF337...b64dA0B29
0 ETH0.0016547912.50193398
Withdraw183911432023-10-20 11:08:59307 days ago1697800139IN
0xc98aF337...b64dA0B29
0 ETH0.0010803114.88485802
Claim Reward183911422023-10-20 11:08:47307 days ago1697800127IN
0xc98aF337...b64dA0B29
0 ETH0.0020471113.69647667
Compound183911112023-10-20 11:02:35307 days ago1697799755IN
0xc98aF337...b64dA0B29
0 ETH0.0008468913.06675431
Compound183910062023-10-20 10:41:35307 days ago1697798495IN
0xc98aF337...b64dA0B29
0 ETH0.0008295712.7995093
Compound183909542023-10-20 10:31:11307 days ago1697797871IN
0xc98aF337...b64dA0B29
0 ETH0.0016392114.11743858
Withdraw183908792023-10-20 10:16:11307 days ago1697796971IN
0xc98aF337...b64dA0B29
0 ETH0.0009168810.78711091
Withdraw183907972023-10-20 9:59:23307 days ago1697795963IN
0xc98aF337...b64dA0B29
0 ETH0.000786929.12395415
Claim Reward183907932023-10-20 9:58:35307 days ago1697795915IN
0xc98aF337...b64dA0B29
0 ETH0.000719398.87457647
Compound183907792023-10-20 9:55:47307 days ago1697795747IN
0xc98aF337...b64dA0B29
0 ETH0.000925327.9691858
Claim Reward183907772023-10-20 9:55:23307 days ago1697795723IN
0xc98aF337...b64dA0B29
0 ETH0.000709668.75448141
Withdraw183905562023-10-20 9:10:59307 days ago1697793059IN
0xc98aF337...b64dA0B29
0 ETH0.0009177610.63974974
Claim Reward183905532023-10-20 9:10:23307 days ago1697793023IN
0xc98aF337...b64dA0B29
0 ETH0.0014029510.59928993
Stake183905492023-10-20 9:09:35307 days ago1697792975IN
0xc98aF337...b64dA0B29
0 ETH0.0007676710.65373365
Compound183905462023-10-20 9:08:59307 days ago1697792939IN
0xc98aF337...b64dA0B29
0 ETH0.0006903710.65178547
View all transactions

View more zero value Internal Transactions in Advanced View mode

Advanced mode:
Loading...
Loading

Contract Source Code Verified (Exact Match)

Contract Name:
RefundStaking

Compiler Version
v0.8.18+commit.87f61d96

Optimization Enabled:
No with 200 runs

Other Settings:
default evmVersion, MIT license

Contract Source Code (Solidity)

/**
 *Submitted for verification at Etherscan.io on 2023-10-18
*/

//SPDX-License-Identifier: No
pragma solidity ^0.8.17;

//--- Context ---//
abstract contract Context {
    constructor() {}

    function _msgSender() internal view returns (address payable) {
        return payable(msg.sender);
    }

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

//--- Pausable ---//
abstract contract Pausable is Context {
    event Paused(address account);

    event Unpaused(address account);

    bool private _paused;

    constructor() {
        _paused = false;
    }

    modifier whenNotPaused() {
        _requireNotPaused();
        _;
    }

    modifier whenPaused() {
        _requirePaused();
        _;
    }

    function paused() public view virtual returns (bool) {
        return _paused;
    }

    function _requireNotPaused() internal view virtual {
        require(!paused(), "Pausable: paused");
    }

    function _requirePaused() internal view virtual {
        require(paused(), "Pausable: not paused");
    }

    function _pause() internal virtual whenNotPaused {
        _paused = true;
        emit Paused(_msgSender());
    }

    function _unpause() internal virtual whenPaused {
        _paused = false;
        emit Unpaused(_msgSender());
    }
}

//--- Ownable ---//
abstract contract Ownable is Context {
    address private _owner;
    address private _multiSig;

    event OwnershipTransferred(
        address indexed previousOwner,
        address indexed newOwner
    );
    event MultiSigTransferred(
        address indexed oldMultiSig,
        address indexed newMultiSig
    );

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

    function multisig() public view virtual returns (address) {
        return _multiSig;
    }

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

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

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

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

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

    function transferMultiSig(
        address newMultiSig
    ) public virtual onlyMultiSignature {
        require(
            newMultiSig != address(0),
            "Ownable: new owner is the zero address"
        );
        _setMultiSig(newMultiSig);
    }

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

    function _setMultiSig(address newMultiSig) private {
        address oldMultiSig = _multiSig;
        _multiSig = newMultiSig;
        emit MultiSigTransferred(oldMultiSig, newMultiSig);
    }
}

//--- Interface for ERC20 ---//
interface IERC20 {
    function totalSupply() external view returns (uint256);

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

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

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

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

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

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

contract RefundStaking is Context, Pausable, Ownable {
    event staking(uint256 amount);
    event WithdrawFromStaking(uint256 amount);
    event ClaimRewards(uint256 amount);

    uint256 public TokenDedicatiAlloStaking; // Modalità 1: Fixed amount of tokens staked.
    uint256 public safeSeconds = 15;
    uint256 public totalSupply; // amount of all token staked
    bool public isStakingLive = false;
    uint256 private dayzero;
    uint256 private preApproval;
    bool public Initalized = false;
    mapping(address => uint256) private rewardsGiaPagati;
    mapping(address => uint256) public rewards;
    mapping(address => uint256) private quandoStake;
    mapping(address => uint256) private quandoWithdraw;
    mapping(address => uint256) private lastTimeStaked;
    mapping(address => uint256) private holdingXstaking;
    mapping(address => uint256) private lastClaimRewards;

    mapping(address => bool) private AlreadyStaked;

    uint256 private interestperDay = 1_0000000000;

    IERC20 public Token;

    function setToken(address _token) external onlyMultiSignature {
        require(!Initalized);
        Token = IERC20(_token);
        Initalized = true;
    }

    function unPause() external onlyMultiSignature {
        _unpause();
    }

    function setTokenDedicatiAlloStaking(uint256 amount) external onlyOwner {
        uint256 tempBalance = Token.balanceOf(msg.sender); //
        require(tempBalance >= amount, "Not enough tokens"); //
        Token.transferFrom(msg.sender, address(this), amount); // make sure to give enough allowance
        TokenDedicatiAlloStaking += amount;
    }

    function setStakingLive() external onlyOwner {
        require(!isStakingLive, "Staking is already live");
        isStakingLive = true;
    }

    function reset() external onlyMultiSignature {
        uint256 tempBalance = Token.balanceOf(address(this));
        if (tempBalance > 0) {
            Token.transfer(msg.sender, tempBalance);
        }
        interestperDay = 0;
        TokenDedicatiAlloStaking = 0;
        isStakingLive = false;
        _pause();
    }

    function stakeprivate(uint256 amount) private {
        uint256 tempBalance = Token.balanceOf(msg.sender);
        require(isStakingLive, "Staking is not live");
        require(tempBalance >= amount, "Not enough tokens");
        Token.transferFrom(msg.sender, address(this), amount);
        holdingXstaking[msg.sender] += amount;
        totalSupply += amount;
        quandoStake[msg.sender] = block.timestamp; // Quando stake in secondi. https://www.site24x7.com/tools/time-stamp-converter.html
        AlreadyStaked[msg.sender] = true;
    }

    function stake(uint256 amount) external whenNotPaused {
        require(msg.sender != address(0));
        require(isStakingLive, "Staking is not live yet.");

        bool YesNoStaked = AlreadyStaked[msg.sender] == true;
        if (YesNoStaked) {
            if (pend(msg.sender) >= holdingXstaking[msg.sender] / 1000) {
                revert(
                    "Claim Rewards, you have at least 0.1% rewards to claim"
                );
            }
        } else {}

        stakeprivate(amount);

        emit staking(amount);
    }

    function withdraw(uint256 amount) external whenNotPaused {
        require(msg.sender != address(0));
        require(amount > 0, "Amount should be greater than 0");
        require(holdingXstaking[msg.sender] >= amount, "Not enough tokens");
        holdingXstaking[msg.sender] -= amount;
        totalSupply -= amount;

        Token.transfer(msg.sender, amount);

        quandoWithdraw[msg.sender] = block.timestamp;
        bool goingToZero = holdingXstaking[msg.sender] == 0;
        if (goingToZero) {
            resetUser();
        }

        emit WithdrawFromStaking(amount);
    }

    function resetUser() private {
        AlreadyStaked[msg.sender] = false;
        rewards[msg.sender] = 0;
        rewardsGiaPagati[msg.sender] = 0;
        lastClaimRewards[msg.sender] = 0;
        quandoStake[msg.sender] = 0;
        holdingXstaking[msg.sender] = 0;
    }

    function calculateRewards() private {
        uint256 interestPerSecond = interestperDay / 86400;
        uint256 interest = (block.timestamp - quandoStake[msg.sender]) *
            interestPerSecond;

        rewards[msg.sender] = (holdingXstaking[msg.sender] * interest);
        rewards[msg.sender] = checkZeroMath(msg.sender, rewards[msg.sender]);
    }

    function safe() private view whenNotPaused {
        require(
            block.timestamp > lastClaimRewards[msg.sender] + safeSeconds,
            "Cannot claim in the sameblock"
        );
    }

    function staked() private view {
        bool YesNoStaked = AlreadyStaked[msg.sender] == true;
        if (YesNoStaked) {} else {
            safe();
        }
    }

    function claimReward() public whenNotPaused {
        require(msg.sender != address(0));
        calculateRewards();
        staked();

        require(rewards[msg.sender] > 0, "Can't claim less than zero tokens");

        uint256 yourrewards = rewards[msg.sender];

        Token.transfer(msg.sender, yourrewards);
        rewardsGiaPagati[msg.sender] += yourrewards;
        lastClaimRewards[msg.sender] = block.timestamp;
        require(
            TokenDedicatiAlloStaking > yourrewards,
            "Token Holders need to be able to get back 100% of the tokens allocated"
        );
        TokenDedicatiAlloStaking -= yourrewards;

        emit ClaimRewards(yourrewards);
    }

    function compound() external whenNotPaused {
        require(msg.sender != address(0));

        calculateRewards(); // Calculate pending rewards
        staked();

        require(rewards[msg.sender] > 0, "No rewards to compound");

        uint256 yourRewards = rewards[msg.sender];
        uint256 compoundAmount = yourRewards;

        // Add pending rewards to the user's staked amount
        holdingXstaking[msg.sender] += compoundAmount;
        totalSupply += compoundAmount;
        rewardsGiaPagati[msg.sender] += yourRewards;
        lastClaimRewards[msg.sender] = block.timestamp;
       
        require(
            TokenDedicatiAlloStaking > yourRewards,
            "Token Holders need to be able to get back 100% of the tokens allocated"
        );
        TokenDedicatiAlloStaking -= yourRewards;
    }

    function amountStaked(address holder) external view returns (uint256) {
        return holdingXstaking[holder];
    }

    function rewardsPaid(address holder) external view returns (uint256) {
        return rewardsGiaPagati[holder];
    }

    function whenStaking(address holder) external view returns (uint256) {
        return quandoStake[holder];
    }

    function lastTimeClaim(address holder) external view returns (uint256) {
        return lastClaimRewards[holder];
    }

    function _alreadyStaked(address holder) external view returns (bool) {
        return AlreadyStaked[holder];
    }

    function pend(address account) private view returns (uint256) {
        uint256 interestPerSecond = interestperDay / 86400;
        uint256 interest = (block.timestamp - quandoStake[account]) *
            interestPerSecond;
        uint256 preRewards;
        preRewards = (holdingXstaking[account] * interest);
        preRewards = checkZeroMath(account, preRewards);

        return preRewards;
    }

    function checkZeroMath(
        address account,
        uint256 a
    ) internal view returns (uint256) {
        uint256 _return;
        if (((a / 100000000000)) / 100 >= rewardsGiaPagati[account]) {
            _return = ((a / 100000000000)) / 100 - rewardsGiaPagati[account];
        } else {
            _return = 0;
        }
        return _return;
    }

    function pendingRewards(address account) external view returns (uint256) {
        return pend(account);
    }
}

Contract Security Audit

Contract ABI

[{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"ClaimRewards","type":"event"},{"anonymous":false,"inputs":[{"indexed":true,"internalType":"address","name":"oldMultiSig","type":"address"},{"indexed":true,"internalType":"address","name":"newMultiSig","type":"address"}],"name":"MultiSigTransferred","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":"address","name":"account","type":"address"}],"name":"Paused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"address","name":"account","type":"address"}],"name":"Unpaused","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"WithdrawFromStaking","type":"event"},{"anonymous":false,"inputs":[{"indexed":false,"internalType":"uint256","name":"amount","type":"uint256"}],"name":"staking","type":"event"},{"inputs":[],"name":"Initalized","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"Token","outputs":[{"internalType":"contract IERC20","name":"","type":"address"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"TokenDedicatiAlloStaking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"_alreadyStaked","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"amountStaked","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"claimReward","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"compound","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"isStakingLive","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"lastTimeClaim","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"multisig","outputs":[{"internalType":"address","name":"","type":"address"}],"stateMutability":"view","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":[{"internalType":"address","name":"account","type":"address"}],"name":"pendingRewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"renounceOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"reset","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"","type":"address"}],"name":"rewards","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"rewardsPaid","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"safeSeconds","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[],"name":"setStakingLive","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"_token","type":"address"}],"name":"setToken","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"setTokenDedicatiAlloStaking","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"stake","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"totalSupply","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"address","name":"newMultiSig","type":"address"}],"name":"transferMultiSig","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"newOwner","type":"address"}],"name":"transferOwnership","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[],"name":"unPause","outputs":[],"stateMutability":"nonpayable","type":"function"},{"inputs":[{"internalType":"address","name":"holder","type":"address"}],"name":"whenStaking","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","type":"function"},{"inputs":[{"internalType":"uint256","name":"amount","type":"uint256"}],"name":"withdraw","outputs":[],"stateMutability":"nonpayable","type":"function"}]

6080604052600f6003556000600560006101000a81548160ff0219169083151502179055506000600860006101000a81548160ff0219169083151502179055506402540be4006011553480156200005557600080fd5b5060008060006101000a81548160ff0219169083151502179055506200009062000084620000b660201b60201c565b620000be60201b60201c565b620000b0620000a4620000b660201b60201c565b6200018360201b60201c565b62000249565b600033905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fd4f90286c853b31e785ae85d08354a790ca9eba6e6eac5152d619cb54766e12060405160405180910390a35050565b61335080620002596000396000f3fe608060405234801561001057600080fd5b50600436106101c45760003560e01c8063715018a6116100f9578063c241267611610097578063ef40a67011610071578063ef40a670146104ab578063f2fde38b146104db578063f69e2046146104f7578063f7b188a514610501576101c4565b8063c241267614610465578063c33ac9b714610483578063d826f88f146104a1576101c4565b8063a2df2ba7116100d3578063a2df2ba7146103f1578063a694fc3a14610421578063afb838e71461043d578063b88a802f1461045b576101c4565b8063715018a6146103ad57806384201bd9146103b75780638da5cb5b146103d3576101c4565b8063341e7dcc116101665780634f726a3d116101405780634f726a3d146102ff5780635c975abb1461032f5780636c03932f1461034d578063700a4a741461037d576101c4565b8063341e7dcc146102b957806338700bfe146102d75780634783c35b146102e1576101c4565b80632138b7c1116101a25780632138b7c1146102335780632790eb531461024f5780632e1a7d4d1461026d57806331d7a26214610289576101c4565b80630700037d146101c9578063144fa6d7146101f957806318160ddd14610215575b600080fd5b6101e360048036038101906101de91906127cd565b61050b565b6040516101f09190612813565b60405180910390f35b610213600480360381019061020e91906127cd565b610523565b005b61021d610618565b60405161022a9190612813565b60405180910390f35b61024d600480360381019061024891906127cd565b61061e565b005b610257610715565b6040516102649190612813565b60405180910390f35b6102876004803603810190610282919061285a565b61071b565b005b6102a3600480360381019061029e91906127cd565b610a05565b6040516102b09190612813565b60405180910390f35b6102c1610a17565b6040516102ce91906128a2565b60405180910390f35b6102df610a2a565b005b6102e9610b57565b6040516102f691906128cc565b60405180910390f35b610319600480360381019061031491906127cd565b610b81565b60405161032691906128a2565b60405180910390f35b610337610bd7565b60405161034491906128a2565b60405180910390f35b610367600480360381019061036291906127cd565b610bed565b6040516103749190612813565b60405180910390f35b610397600480360381019061039291906127cd565b610c36565b6040516103a49190612813565b60405180910390f35b6103b5610c7f565b005b6103d160048036038101906103cc919061285a565b610d4b565b005b6103db610fae565b6040516103e891906128cc565b60405180910390f35b61040b600480360381019061040691906127cd565b610fd7565b6040516104189190612813565b60405180910390f35b61043b6004803603810190610436919061285a565b611020565b005b6104456111ee565b6040516104529190612813565b60405180910390f35b6104636111f4565b005b61046d6114dd565b60405161047a9190612946565b60405180910390f35b61048b611503565b60405161049891906128a2565b60405180910390f35b6104a9611516565b005b6104c560048036038101906104c091906127cd565b611713565b6040516104d29190612813565b60405180910390f35b6104f560048036038101906104f091906127cd565b61175c565b005b6104ff611897565b005b610509611b1d565b005b600a6020528060005260406000206000915090505481565b61052b611ba3565b73ffffffffffffffffffffffffffffffffffffffff16610549610b57565b73ffffffffffffffffffffffffffffffffffffffff161461059f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610596906129e4565b60405180910390fd5b600860009054906101000a900460ff16156105b957600080fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006101000a81548160ff02191690831515021790555050565b60045481565b610626611ba3565b73ffffffffffffffffffffffffffffffffffffffff16610644610b57565b73ffffffffffffffffffffffffffffffffffffffff161461069a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610691906129e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070090612a76565b60405180910390fd5b61071281611bab565b50565b60035481565b610723611c71565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361075c57600080fd5b6000811161079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079690612ae2565b60405180910390fd5b80600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081890612b4e565b60405180910390fd5b80600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108709190612b9d565b9250508190555080600460008282546108899190612b9d565b92505081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016108ed929190612bd1565b6020604051808303816000875af115801561090c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109309190612c26565b5042600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414905080156109ca576109c9611cbb565b5b7fc483bf0af3b237d0e8f42091db468219edf0d51b24995513b57b9857be787154826040516109f99190612813565b60405180910390a15050565b6000610a1082611e6e565b9050919050565b600560009054906101000a900460ff1681565b610a32611ba3565b73ffffffffffffffffffffffffffffffffffffffff16610a50610fae565b73ffffffffffffffffffffffffffffffffffffffff161480610aab5750610a75611ba3565b73ffffffffffffffffffffffffffffffffffffffff16610a93610b57565b73ffffffffffffffffffffffffffffffffffffffff16145b610aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae190612c9f565b60405180910390fd5b600560009054906101000a900460ff1615610b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3190612d0b565b60405180910390fd5b6001600560006101000a81548160ff021916908315150217905550565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900460ff16905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c87611ba3565b73ffffffffffffffffffffffffffffffffffffffff16610ca5610fae565b73ffffffffffffffffffffffffffffffffffffffff161480610d005750610cca611ba3565b73ffffffffffffffffffffffffffffffffffffffff16610ce8610b57565b73ffffffffffffffffffffffffffffffffffffffff16145b610d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3690612c9f565b60405180910390fd5b610d496000611f44565b565b610d53611ba3565b73ffffffffffffffffffffffffffffffffffffffff16610d71610fae565b73ffffffffffffffffffffffffffffffffffffffff161480610dcc5750610d96611ba3565b73ffffffffffffffffffffffffffffffffffffffff16610db4610b57565b73ffffffffffffffffffffffffffffffffffffffff16145b610e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0290612c9f565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610e6891906128cc565b602060405180830381865afa158015610e85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea99190612d40565b905081811015610eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee590612b4e565b60405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401610f4d93929190612d6d565b6020604051808303816000875af1158015610f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f909190612c26565b508160026000828254610fa39190612da4565b925050819055505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611028611c71565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361106157600080fd5b600560009054906101000a900460ff166110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a790612e24565b60405180910390fd5b600060011515601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514905080156111a9576103e8600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461115b9190612e73565b61116433611e6e565b106111a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119b90612f16565b60405180910390fd5b6111aa565b5b6111b382612009565b7f1dbb2a223bf10b333097931146bfc57c2b39e7c0615d1b275c61bb2eb417f658826040516111e29190612813565b60405180910390a15050565b60025481565b6111fc611c71565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361123557600080fd5b61123d6122ed565b61124561247a565b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116112c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112be90612fa8565b60405180910390fd5b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611368929190612bd1565b6020604051808303816000875af1158015611387573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ab9190612c26565b5080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113fb9190612da4565b9250508190555042600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806002541161148a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148190613060565b60405180910390fd5b806002600082825461149c9190612b9d565b925050819055507fbacfa9662d479c707dae707c358323f0c7711ef382007957dc9935e629da36b2816040516114d29190612813565b60405180910390a150565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900460ff1681565b61151e611ba3565b73ffffffffffffffffffffffffffffffffffffffff1661153c610b57565b73ffffffffffffffffffffffffffffffffffffffff1614611592576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611589906129e4565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115ef91906128cc565b602060405180830381865afa15801561160c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116309190612d40565b905060008111156116dd57601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611698929190612bd1565b6020604051808303816000875af11580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190612c26565b505b600060118190555060006002819055506000600560006101000a81548160ff0219169083151502179055506117106124e3565b50565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611764611ba3565b73ffffffffffffffffffffffffffffffffffffffff16611782610fae565b73ffffffffffffffffffffffffffffffffffffffff1614806117dd57506117a7611ba3565b73ffffffffffffffffffffffffffffffffffffffff166117c5610b57565b73ffffffffffffffffffffffffffffffffffffffff16145b61181c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181390612c9f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188290612a76565b60405180910390fd5b61189481611f44565b50565b61189f611c71565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036118d857600080fd5b6118e06122ed565b6118e861247a565b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161196a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611961906130cc565b60405180910390fd5b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081905080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a029190612da4565b925050819055508060046000828254611a1b9190612da4565b9250508190555081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a719190612da4565b9250508190555042600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160025411611b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af790613060565b60405180910390fd5b8160026000828254611b129190612b9d565b925050819055505050565b611b25611ba3565b73ffffffffffffffffffffffffffffffffffffffff16611b43610b57565b73ffffffffffffffffffffffffffffffffffffffff1614611b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b90906129e4565b60405180910390fd5b611ba1612545565b565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fd4f90286c853b31e785ae85d08354a790ca9eba6e6eac5152d619cb54766e12060405160405180910390a35050565b611c79610bd7565b15611cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb090613138565b60405180910390fd5b565b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008062015180601154611e829190612e73565b9050600081600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442611ed29190612b9d565b611edc9190613158565b9050600081600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f2b9190613158565b9050611f3785826125a7565b9050809350505050919050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161206691906128cc565b602060405180830381865afa158015612083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a79190612d40565b9050600560009054906101000a900460ff166120f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ef906131e6565b60405180910390fd5b8181101561213b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213290612b4e565b60405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b815260040161219a93929190612d6d565b6020604051808303816000875af11580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121dd9190612c26565b5081600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461222d9190612da4565b9250508190555081600460008282546122469190612da4565b9250508190555042600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000620151806011546123009190612e73565b9050600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054426123509190612b9d565b61235a9190613158565b905080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a79190613158565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061243333600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a7565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600060011515601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515149050806124e0576124df612689565b5b50565b6124eb611c71565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861252e611ba3565b60405161253b9190613227565b60405180910390a1565b61254d612721565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612590611ba3565b60405161259d9190613227565b60405180910390a1565b600080600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054606464174876e800856125fd9190612e73565b6126079190612e73565b1061267a57600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054606464174876e8008561265f9190612e73565b6126699190612e73565b6126739190612b9d565b905061267f565b600090505b8091505092915050565b612691611c71565b600354600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126de9190612da4565b421161271f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127169061328e565b60405180910390fd5b565b612729610bd7565b612768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275f906132fa565b60405180910390fd5b565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061279a8261276f565b9050919050565b6127aa8161278f565b81146127b557600080fd5b50565b6000813590506127c7816127a1565b92915050565b6000602082840312156127e3576127e261276a565b5b60006127f1848285016127b8565b91505092915050565b6000819050919050565b61280d816127fa565b82525050565b60006020820190506128286000830184612804565b92915050565b612837816127fa565b811461284257600080fd5b50565b6000813590506128548161282e565b92915050565b6000602082840312156128705761286f61276a565b5b600061287e84828501612845565b91505092915050565b60008115159050919050565b61289c81612887565b82525050565b60006020820190506128b76000830184612893565b92915050565b6128c68161278f565b82525050565b60006020820190506128e160008301846128bd565b92915050565b6000819050919050565b600061290c6129076129028461276f565b6128e7565b61276f565b9050919050565b600061291e826128f1565b9050919050565b600061293082612913565b9050919050565b61294081612925565b82525050565b600060208201905061295b6000830184612937565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206d756c746960008201527f7369670000000000000000000000000000000000000000000000000000000000602082015250565b60006129ce602383612961565b91506129d982612972565b604082019050919050565b600060208201905081810360008301526129fd816129c1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612a60602683612961565b9150612a6b82612a04565b604082019050919050565b60006020820190508181036000830152612a8f81612a53565b9050919050565b7f416d6f756e742073686f756c642062652067726561746572207468616e203000600082015250565b6000612acc601f83612961565b9150612ad782612a96565b602082019050919050565b60006020820190508181036000830152612afb81612abf565b9050919050565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b6000612b38601183612961565b9150612b4382612b02565b602082019050919050565b60006020820190508181036000830152612b6781612b2b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ba8826127fa565b9150612bb3836127fa565b9250828203905081811115612bcb57612bca612b6e565b5b92915050565b6000604082019050612be660008301856128bd565b612bf36020830184612804565b9392505050565b612c0381612887565b8114612c0e57600080fd5b50565b600081519050612c2081612bfa565b92915050565b600060208284031215612c3c57612c3b61276a565b5b6000612c4a84828501612c11565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c89602083612961565b9150612c9482612c53565b602082019050919050565b60006020820190508181036000830152612cb881612c7c565b9050919050565b7f5374616b696e6720697320616c7265616479206c697665000000000000000000600082015250565b6000612cf5601783612961565b9150612d0082612cbf565b602082019050919050565b60006020820190508181036000830152612d2481612ce8565b9050919050565b600081519050612d3a8161282e565b92915050565b600060208284031215612d5657612d5561276a565b5b6000612d6484828501612d2b565b91505092915050565b6000606082019050612d8260008301866128bd565b612d8f60208301856128bd565b612d9c6040830184612804565b949350505050565b6000612daf826127fa565b9150612dba836127fa565b9250828201905080821115612dd257612dd1612b6e565b5b92915050565b7f5374616b696e67206973206e6f74206c697665207965742e0000000000000000600082015250565b6000612e0e601883612961565b9150612e1982612dd8565b602082019050919050565b60006020820190508181036000830152612e3d81612e01565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612e7e826127fa565b9150612e89836127fa565b925082612e9957612e98612e44565b5b828204905092915050565b7f436c61696d20526577617264732c20796f752068617665206174206c6561737460008201527f20302e3125207265776172647320746f20636c61696d00000000000000000000602082015250565b6000612f00603683612961565b9150612f0b82612ea4565b604082019050919050565b60006020820190508181036000830152612f2f81612ef3565b9050919050565b7f43616e277420636c61696d206c657373207468616e207a65726f20746f6b656e60008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f92602183612961565b9150612f9d82612f36565b604082019050919050565b60006020820190508181036000830152612fc181612f85565b9050919050565b7f546f6b656e20486f6c64657273206e65656420746f2062652061626c6520746f60008201527f20676574206261636b2031303025206f662074686520746f6b656e7320616c6c60208201527f6f63617465640000000000000000000000000000000000000000000000000000604082015250565b600061304a604683612961565b915061305582612fc8565b606082019050919050565b600060208201905081810360008301526130798161303d565b9050919050565b7f4e6f207265776172647320746f20636f6d706f756e6400000000000000000000600082015250565b60006130b6601683612961565b91506130c182613080565b602082019050919050565b600060208201905081810360008301526130e5816130a9565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613122601083612961565b915061312d826130ec565b602082019050919050565b6000602082019050818103600083015261315181613115565b9050919050565b6000613163826127fa565b915061316e836127fa565b925082820261317c816127fa565b9150828204841483151761319357613192612b6e565b5b5092915050565b7f5374616b696e67206973206e6f74206c69766500000000000000000000000000600082015250565b60006131d0601383612961565b91506131db8261319a565b602082019050919050565b600060208201905081810360008301526131ff816131c3565b9050919050565b600061321182612913565b9050919050565b61322181613206565b82525050565b600060208201905061323c6000830184613218565b92915050565b7f43616e6e6f7420636c61696d20696e207468652073616d65626c6f636b000000600082015250565b6000613278601d83612961565b915061328382613242565b602082019050919050565b600060208201905081810360008301526132a78161326b565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006132e4601483612961565b91506132ef826132ae565b602082019050919050565b60006020820190508181036000830152613313816132d7565b905091905056fea2646970667358221220a1ec7939b9706151fa561fdb63311d10aa0e41c0ab5e586508be108c4790ec8764736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101c45760003560e01c8063715018a6116100f9578063c241267611610097578063ef40a67011610071578063ef40a670146104ab578063f2fde38b146104db578063f69e2046146104f7578063f7b188a514610501576101c4565b8063c241267614610465578063c33ac9b714610483578063d826f88f146104a1576101c4565b8063a2df2ba7116100d3578063a2df2ba7146103f1578063a694fc3a14610421578063afb838e71461043d578063b88a802f1461045b576101c4565b8063715018a6146103ad57806384201bd9146103b75780638da5cb5b146103d3576101c4565b8063341e7dcc116101665780634f726a3d116101405780634f726a3d146102ff5780635c975abb1461032f5780636c03932f1461034d578063700a4a741461037d576101c4565b8063341e7dcc146102b957806338700bfe146102d75780634783c35b146102e1576101c4565b80632138b7c1116101a25780632138b7c1146102335780632790eb531461024f5780632e1a7d4d1461026d57806331d7a26214610289576101c4565b80630700037d146101c9578063144fa6d7146101f957806318160ddd14610215575b600080fd5b6101e360048036038101906101de91906127cd565b61050b565b6040516101f09190612813565b60405180910390f35b610213600480360381019061020e91906127cd565b610523565b005b61021d610618565b60405161022a9190612813565b60405180910390f35b61024d600480360381019061024891906127cd565b61061e565b005b610257610715565b6040516102649190612813565b60405180910390f35b6102876004803603810190610282919061285a565b61071b565b005b6102a3600480360381019061029e91906127cd565b610a05565b6040516102b09190612813565b60405180910390f35b6102c1610a17565b6040516102ce91906128a2565b60405180910390f35b6102df610a2a565b005b6102e9610b57565b6040516102f691906128cc565b60405180910390f35b610319600480360381019061031491906127cd565b610b81565b60405161032691906128a2565b60405180910390f35b610337610bd7565b60405161034491906128a2565b60405180910390f35b610367600480360381019061036291906127cd565b610bed565b6040516103749190612813565b60405180910390f35b610397600480360381019061039291906127cd565b610c36565b6040516103a49190612813565b60405180910390f35b6103b5610c7f565b005b6103d160048036038101906103cc919061285a565b610d4b565b005b6103db610fae565b6040516103e891906128cc565b60405180910390f35b61040b600480360381019061040691906127cd565b610fd7565b6040516104189190612813565b60405180910390f35b61043b6004803603810190610436919061285a565b611020565b005b6104456111ee565b6040516104529190612813565b60405180910390f35b6104636111f4565b005b61046d6114dd565b60405161047a9190612946565b60405180910390f35b61048b611503565b60405161049891906128a2565b60405180910390f35b6104a9611516565b005b6104c560048036038101906104c091906127cd565b611713565b6040516104d29190612813565b60405180910390f35b6104f560048036038101906104f091906127cd565b61175c565b005b6104ff611897565b005b610509611b1d565b005b600a6020528060005260406000206000915090505481565b61052b611ba3565b73ffffffffffffffffffffffffffffffffffffffff16610549610b57565b73ffffffffffffffffffffffffffffffffffffffff161461059f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610596906129e4565b60405180910390fd5b600860009054906101000a900460ff16156105b957600080fd5b80601260006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600860006101000a81548160ff02191690831515021790555050565b60045481565b610626611ba3565b73ffffffffffffffffffffffffffffffffffffffff16610644610b57565b73ffffffffffffffffffffffffffffffffffffffff161461069a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610691906129e4565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603610709576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161070090612a76565b60405180910390fd5b61071281611bab565b50565b60035481565b610723611c71565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361075c57600080fd5b6000811161079f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161079690612ae2565b60405180910390fd5b80600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541015610821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081890612b4e565b60405180910390fd5b80600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546108709190612b9d565b9250508190555080600460008282546108899190612b9d565b92505081905550601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016108ed929190612bd1565b6020604051808303816000875af115801561090c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906109309190612c26565b5042600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205414905080156109ca576109c9611cbb565b5b7fc483bf0af3b237d0e8f42091db468219edf0d51b24995513b57b9857be787154826040516109f99190612813565b60405180910390a15050565b6000610a1082611e6e565b9050919050565b600560009054906101000a900460ff1681565b610a32611ba3565b73ffffffffffffffffffffffffffffffffffffffff16610a50610fae565b73ffffffffffffffffffffffffffffffffffffffff161480610aab5750610a75611ba3565b73ffffffffffffffffffffffffffffffffffffffff16610a93610b57565b73ffffffffffffffffffffffffffffffffffffffff16145b610aea576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ae190612c9f565b60405180910390fd5b600560009054906101000a900460ff1615610b3a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610b3190612d0b565b60405180910390fd5b6001600560006101000a81548160ff021916908315150217905550565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900460ff16905090565b6000600b60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600960008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610c87611ba3565b73ffffffffffffffffffffffffffffffffffffffff16610ca5610fae565b73ffffffffffffffffffffffffffffffffffffffff161480610d005750610cca611ba3565b73ffffffffffffffffffffffffffffffffffffffff16610ce8610b57565b73ffffffffffffffffffffffffffffffffffffffff16145b610d3f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d3690612c9f565b60405180910390fd5b610d496000611f44565b565b610d53611ba3565b73ffffffffffffffffffffffffffffffffffffffff16610d71610fae565b73ffffffffffffffffffffffffffffffffffffffff161480610dcc5750610d96611ba3565b73ffffffffffffffffffffffffffffffffffffffff16610db4610b57565b73ffffffffffffffffffffffffffffffffffffffff16145b610e0b576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e0290612c9f565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610e6891906128cc565b602060405180830381865afa158015610e85573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610ea99190612d40565b905081811015610eee576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ee590612b4e565b60405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b8152600401610f4d93929190612d6d565b6020604051808303816000875af1158015610f6c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610f909190612c26565b508160026000828254610fa39190612da4565b925050819055505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611028611c71565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361106157600080fd5b600560009054906101000a900460ff166110b0576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110a790612e24565b60405180910390fd5b600060011515601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff16151514905080156111a9576103e8600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461115b9190612e73565b61116433611e6e565b106111a4576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161119b90612f16565b60405180910390fd5b6111aa565b5b6111b382612009565b7f1dbb2a223bf10b333097931146bfc57c2b39e7c0615d1b275c61bb2eb417f658826040516111e29190612813565b60405180910390a15050565b60025481565b6111fc611c71565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361123557600080fd5b61123d6122ed565b61124561247a565b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116112c7576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016112be90612fa8565b60405180910390fd5b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611368929190612bd1565b6020604051808303816000875af1158015611387573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906113ab9190612c26565b5080600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546113fb9190612da4565b9250508190555042600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550806002541161148a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161148190613060565b60405180910390fd5b806002600082825461149c9190612b9d565b925050819055507fbacfa9662d479c707dae707c358323f0c7711ef382007957dc9935e629da36b2816040516114d29190612813565b60405180910390a150565b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600860009054906101000a900460ff1681565b61151e611ba3565b73ffffffffffffffffffffffffffffffffffffffff1661153c610b57565b73ffffffffffffffffffffffffffffffffffffffff1614611592576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611589906129e4565b60405180910390fd5b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b81526004016115ef91906128cc565b602060405180830381865afa15801561160c573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116309190612d40565b905060008111156116dd57601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611698929190612bd1565b6020604051808303816000875af11580156116b7573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116db9190612c26565b505b600060118190555060006002819055506000600560006101000a81548160ff0219169083151502179055506117106124e3565b50565b6000600e60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611764611ba3565b73ffffffffffffffffffffffffffffffffffffffff16611782610fae565b73ffffffffffffffffffffffffffffffffffffffff1614806117dd57506117a7611ba3565b73ffffffffffffffffffffffffffffffffffffffff166117c5610b57565b73ffffffffffffffffffffffffffffffffffffffff16145b61181c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161181390612c9f565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361188b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161188290612a76565b60405180910390fd5b61189481611f44565b50565b61189f611c71565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036118d857600080fd5b6118e06122ed565b6118e861247a565b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541161196a576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611961906130cc565b60405180910390fd5b6000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050600081905080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a029190612da4565b925050819055508060046000828254611a1b9190612da4565b9250508190555081600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254611a719190612da4565b9250508190555042600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508160025411611b00576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611af790613060565b60405180910390fd5b8160026000828254611b129190612b9d565b925050819055505050565b611b25611ba3565b73ffffffffffffffffffffffffffffffffffffffff16611b43610b57565b73ffffffffffffffffffffffffffffffffffffffff1614611b99576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b90906129e4565b60405180910390fd5b611ba1612545565b565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fd4f90286c853b31e785ae85d08354a790ca9eba6e6eac5152d619cb54766e12060405160405180910390a35050565b611c79610bd7565b15611cb9576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611cb090613138565b60405180910390fd5b565b6000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600960003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008062015180601154611e829190612e73565b9050600081600b60008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442611ed29190612b9d565b611edc9190613158565b9050600081600e60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611f2b9190613158565b9050611f3785826125a7565b9050809350505050919050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b815260040161206691906128cc565b602060405180830381865afa158015612083573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906120a79190612d40565b9050600560009054906101000a900460ff166120f8576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016120ef906131e6565b60405180910390fd5b8181101561213b576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161213290612b4e565b60405180910390fd5b601260009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b815260040161219a93929190612d6d565b6020604051808303816000875af11580156121b9573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906121dd9190612c26565b5081600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461222d9190612da4565b9250508190555081600460008282546122469190612da4565b9250508190555042600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000620151806011546123009190612e73565b9050600081600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054426123509190612b9d565b61235a9190613158565b905080600e60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546123a79190613158565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208190555061243333600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546125a7565b600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600060011515601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515149050806124e0576124df612689565b5b50565b6124eb611c71565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a25861252e611ba3565b60405161253b9190613227565b60405180910390a1565b61254d612721565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa612590611ba3565b60405161259d9190613227565b60405180910390a1565b600080600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054606464174876e800856125fd9190612e73565b6126079190612e73565b1061267a57600960008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054606464174876e8008561265f9190612e73565b6126699190612e73565b6126739190612b9d565b905061267f565b600090505b8091505092915050565b612691611c71565b600354600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546126de9190612da4565b421161271f576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016127169061328e565b60405180910390fd5b565b612729610bd7565b612768576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161275f906132fa565b60405180910390fd5b565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061279a8261276f565b9050919050565b6127aa8161278f565b81146127b557600080fd5b50565b6000813590506127c7816127a1565b92915050565b6000602082840312156127e3576127e261276a565b5b60006127f1848285016127b8565b91505092915050565b6000819050919050565b61280d816127fa565b82525050565b60006020820190506128286000830184612804565b92915050565b612837816127fa565b811461284257600080fd5b50565b6000813590506128548161282e565b92915050565b6000602082840312156128705761286f61276a565b5b600061287e84828501612845565b91505092915050565b60008115159050919050565b61289c81612887565b82525050565b60006020820190506128b76000830184612893565b92915050565b6128c68161278f565b82525050565b60006020820190506128e160008301846128bd565b92915050565b6000819050919050565b600061290c6129076129028461276f565b6128e7565b61276f565b9050919050565b600061291e826128f1565b9050919050565b600061293082612913565b9050919050565b61294081612925565b82525050565b600060208201905061295b6000830184612937565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206d756c746960008201527f7369670000000000000000000000000000000000000000000000000000000000602082015250565b60006129ce602383612961565b91506129d982612972565b604082019050919050565b600060208201905081810360008301526129fd816129c1565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612a60602683612961565b9150612a6b82612a04565b604082019050919050565b60006020820190508181036000830152612a8f81612a53565b9050919050565b7f416d6f756e742073686f756c642062652067726561746572207468616e203000600082015250565b6000612acc601f83612961565b9150612ad782612a96565b602082019050919050565b60006020820190508181036000830152612afb81612abf565b9050919050565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b6000612b38601183612961565b9150612b4382612b02565b602082019050919050565b60006020820190508181036000830152612b6781612b2b565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612ba8826127fa565b9150612bb3836127fa565b9250828203905081811115612bcb57612bca612b6e565b5b92915050565b6000604082019050612be660008301856128bd565b612bf36020830184612804565b9392505050565b612c0381612887565b8114612c0e57600080fd5b50565b600081519050612c2081612bfa565b92915050565b600060208284031215612c3c57612c3b61276a565b5b6000612c4a84828501612c11565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612c89602083612961565b9150612c9482612c53565b602082019050919050565b60006020820190508181036000830152612cb881612c7c565b9050919050565b7f5374616b696e6720697320616c7265616479206c697665000000000000000000600082015250565b6000612cf5601783612961565b9150612d0082612cbf565b602082019050919050565b60006020820190508181036000830152612d2481612ce8565b9050919050565b600081519050612d3a8161282e565b92915050565b600060208284031215612d5657612d5561276a565b5b6000612d6484828501612d2b565b91505092915050565b6000606082019050612d8260008301866128bd565b612d8f60208301856128bd565b612d9c6040830184612804565b949350505050565b6000612daf826127fa565b9150612dba836127fa565b9250828201905080821115612dd257612dd1612b6e565b5b92915050565b7f5374616b696e67206973206e6f74206c697665207965742e0000000000000000600082015250565b6000612e0e601883612961565b9150612e1982612dd8565b602082019050919050565b60006020820190508181036000830152612e3d81612e01565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612e7e826127fa565b9150612e89836127fa565b925082612e9957612e98612e44565b5b828204905092915050565b7f436c61696d20526577617264732c20796f752068617665206174206c6561737460008201527f20302e3125207265776172647320746f20636c61696d00000000000000000000602082015250565b6000612f00603683612961565b9150612f0b82612ea4565b604082019050919050565b60006020820190508181036000830152612f2f81612ef3565b9050919050565b7f43616e277420636c61696d206c657373207468616e207a65726f20746f6b656e60008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000612f92602183612961565b9150612f9d82612f36565b604082019050919050565b60006020820190508181036000830152612fc181612f85565b9050919050565b7f546f6b656e20486f6c64657273206e65656420746f2062652061626c6520746f60008201527f20676574206261636b2031303025206f662074686520746f6b656e7320616c6c60208201527f6f63617465640000000000000000000000000000000000000000000000000000604082015250565b600061304a604683612961565b915061305582612fc8565b606082019050919050565b600060208201905081810360008301526130798161303d565b9050919050565b7f4e6f207265776172647320746f20636f6d706f756e6400000000000000000000600082015250565b60006130b6601683612961565b91506130c182613080565b602082019050919050565b600060208201905081810360008301526130e5816130a9565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b6000613122601083612961565b915061312d826130ec565b602082019050919050565b6000602082019050818103600083015261315181613115565b9050919050565b6000613163826127fa565b915061316e836127fa565b925082820261317c816127fa565b9150828204841483151761319357613192612b6e565b5b5092915050565b7f5374616b696e67206973206e6f74206c69766500000000000000000000000000600082015250565b60006131d0601383612961565b91506131db8261319a565b602082019050919050565b600060208201905081810360008301526131ff816131c3565b9050919050565b600061321182612913565b9050919050565b61322181613206565b82525050565b600060208201905061323c6000830184613218565b92915050565b7f43616e6e6f7420636c61696d20696e207468652073616d65626c6f636b000000600082015250565b6000613278601d83612961565b915061328382613242565b602082019050919050565b600060208201905081810360008301526132a78161326b565b9050919050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b60006132e4601483612961565b91506132ef826132ae565b602082019050919050565b60006020820190508181036000830152613313816132d7565b905091905056fea2646970667358221220a1ec7939b9706151fa561fdb63311d10aa0e41c0ab5e586508be108c4790ec8764736f6c63430008120033

Deployed Bytecode Sourcemap

4202:8068:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;4783:42;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5256:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4520:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2705:265;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4482:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7496:608;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12155:112;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4583:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5873:145;;;:::i;:::-;;1795:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11230:116;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;755:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10979:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10852:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2366:94;;;:::i;:::-;;5510:355;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1896:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11101:121;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6930:558;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4389:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9161:705;;;:::i;:::-;;5228:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4687:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6026:332;;;:::i;:::-;;10725:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2468:229;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;9874:843;;;:::i;:::-;;5426:76;;;:::i;:::-;;4783:42;;;;;;;;;;;;;;;;;:::o;5256:162::-;2263:12;:10;:12::i;:::-;2249:26;;:10;:8;:10::i;:::-;:26;;;2227:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;5338:10:::1;;;;;;;;;;;5337:11;5329:20;;;::::0;::::1;;5375:6;5360:5;;:22;;;;;;;;;;;;;;;;;;5406:4;5393:10;;:17;;;;;;;;;;;;;;;;;;5256:162:::0;:::o;4520:26::-;;;;:::o;2705:265::-;2263:12;:10;:12::i;:::-;2249:26;;:10;:8;:10::i;:::-;:26;;;2227:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;2858:1:::1;2835:25;;:11;:25;;::::0;2813:113:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2937:25;2950:11;2937:12;:25::i;:::-;2705:265:::0;:::o;4482:31::-;;;;:::o;7496:608::-;631:19;:17;:19::i;:::-;7594:1:::1;7572:24;;:10;:24;;::::0;7564:33:::1;;;::::0;::::1;;7625:1;7616:6;:10;7608:54;;;;;;;;;;;;:::i;:::-;;;;;;;;;7712:6;7681:15;:27;7697:10;7681:27;;;;;;;;;;;;;;;;:37;;7673:67;;;;;;;;;;;;:::i;:::-;;;;;;;;;7782:6;7751:15;:27;7767:10;7751:27;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;7814:6;7799:11;;:21;;;;;;;:::i;:::-;;;;;;;;7833:5;;;;;;;;;;;:14;;;7848:10;7860:6;7833:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7909:15;7880:14;:26;7895:10;7880:26;;;;;;;;;;;;;;;:44;;;;7935:16;7985:1:::0;7954:15:::1;:27;7970:10;7954:27;;;;;;;;;;;;;;;;:32;7935:51;;8001:11;7997:55;;;8029:11;:9;:11::i;:::-;7997:55;8069:27;8089:6;8069:27;;;;;;:::i;:::-;;;;;;;;7553:551;7496:608:::0;:::o;12155:112::-;12219:7;12246:13;12251:7;12246:4;:13::i;:::-;12239:20;;12155:112;;;:::o;4583:33::-;;;;;;;;;;;;;:::o;5873:145::-;2056:12;:10;:12::i;:::-;2045:23;;:7;:5;:7::i;:::-;:23;;;:53;;;;2086:12;:10;:12::i;:::-;2072:26;;:10;:8;:10::i;:::-;:26;;;2045:53;2023:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;5938:13:::1;;;;;;;;;;;5937:14;5929:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;6006:4;5990:13;;:20;;;;;;;;;;;;;;;;;;5873:145::o:0;1795:93::-;1844:7;1871:9;;;;;;;;;;;1864:16;;1795:93;:::o;11230:116::-;11293:4;11317:13;:21;11331:6;11317:21;;;;;;;;;;;;;;;;;;;;;;;;;11310:28;;11230:116;;;:::o;755:86::-;802:4;826:7;;;;;;;;;;;819:14;;755:86;:::o;10979:114::-;11039:7;11066:11;:19;11078:6;11066:19;;;;;;;;;;;;;;;;11059:26;;10979:114;;;:::o;10852:119::-;10912:7;10939:16;:24;10956:6;10939:24;;;;;;;;;;;;;;;;10932:31;;10852:119;;;:::o;2366:94::-;2056:12;:10;:12::i;:::-;2045:23;;:7;:5;:7::i;:::-;:23;;;:53;;;;2086:12;:10;:12::i;:::-;2072:26;;:10;:8;:10::i;:::-;:26;;;2045:53;2023:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;2431:21:::1;2449:1;2431:9;:21::i;:::-;2366:94::o:0;5510:355::-;2056:12;:10;:12::i;:::-;2045:23;;:7;:5;:7::i;:::-;:23;;;:53;;;;2086:12;:10;:12::i;:::-;2072:26;;:10;:8;:10::i;:::-;:26;;;2045:53;2023:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;5593:19:::1;5615:5;;;;;;;;;;;:15;;;5631:10;5615:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5593:49;;5679:6;5664:11;:21;;5656:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;5721:5;;;;;;;;;;;:18;;;5740:10;5760:4;5767:6;5721:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5851:6;5823:24;;:34;;;;;;;:::i;:::-;;;;;;;;5582:283;5510:355:::0;:::o;1896:87::-;1942:7;1969:6;;;;;;;;;;;1962:13;;1896:87;:::o;11101:121::-;11163:7;11190:16;:24;11207:6;11190:24;;;;;;;;;;;;;;;;11183:31;;11101:121;;;:::o;6930:558::-;631:19;:17;:19::i;:::-;7025:1:::1;7003:24;;:10;:24;;::::0;6995:33:::1;;;::::0;::::1;;7047:13;;;;;;;;;;;7039:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;7102:16;7150:4;7121:33;;:13;:25;7135:10;7121:25;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;7102:52;;7169:11;7165:250;;;7251:4;7221:15;:27;7237:10;7221:27;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;7201:16;7206:10;7201:4;:16::i;:::-;:54;7197:199;;7276:104;;;;;;;;;;:::i;:::-;;;;;;;;7197:199;7165:250;;;;7427:20;7440:6;7427:12;:20::i;:::-;7465:15;7473:6;7465:15;;;;;;:::i;:::-;;;;;;;;6984:504;6930:558:::0;:::o;4389:39::-;;;;:::o;9161:705::-;631:19;:17;:19::i;:::-;9246:1:::1;9224:24;;:10;:24;;::::0;9216:33:::1;;;::::0;::::1;;9260:18;:16;:18::i;:::-;9289:8;:6;:8::i;:::-;9340:1;9318:7;:19;9326:10;9318:19;;;;;;;;;;;;;;;;:23;9310:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;9392:19;9414:7;:19;9422:10;9414:19;;;;;;;;;;;;;;;;9392:41;;9446:5;;;;;;;;;;;:14;;;9461:10;9473:11;9446:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;9528:11;9496:16;:28;9513:10;9496:28;;;;;;;;;;;;;;;;:43;;;;;;;:::i;:::-;;;;;;;;9581:15;9550:16;:28;9567:10;9550:28;;;;;;;;;;;;;;;:46;;;;9656:11;9629:24;;:38;9607:158;;;;;;;;;;;;:::i;:::-;;;;;;;;;9804:11;9776:24;;:39;;;;;;;:::i;:::-;;;;;;;;9833:25;9846:11;9833:25;;;;;;:::i;:::-;;;;;;;;9205:661;9161:705::o:0;5228:19::-;;;;;;;;;;;;;:::o;4687:30::-;;;;;;;;;;;;;:::o;6026:332::-;2263:12;:10;:12::i;:::-;2249:26;;:10;:8;:10::i;:::-;:26;;;2227:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;6082:19:::1;6104:5;;;;;;;;;;;:15;;;6128:4;6104:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6082:52;;6163:1;6149:11;:15;6145:87;;;6181:5;;;;;;;;;;;:14;;;6196:10;6208:11;6181:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6145:87;6259:1;6242:14;:18;;;;6298:1;6271:24;:28;;;;6326:5;6310:13;;:21;;;;;;;;;;;;;;;;;;6342:8;:6;:8::i;:::-;6071:287;6026:332::o:0;10725:119::-;10786:7;10813:15;:23;10829:6;10813:23;;;;;;;;;;;;;;;;10806:30;;10725:119;;;:::o;2468:229::-;2056:12;:10;:12::i;:::-;2045:23;;:7;:5;:7::i;:::-;:23;;;:53;;;;2086:12;:10;:12::i;:::-;2072:26;;:10;:8;:10::i;:::-;:26;;;2045:53;2023:135;;;;;;;;;;;;:::i;:::-;;;;;;;;;2591:1:::1;2571:22;;:8;:22;;::::0;2549:110:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2670:19;2680:8;2670:9;:19::i;:::-;2468:229:::0;:::o;9874:843::-;631:19;:17;:19::i;:::-;9958:1:::1;9936:24;;:10;:24;;::::0;9928:33:::1;;;::::0;::::1;;9974:18;:16;:18::i;:::-;10032:8;:6;:8::i;:::-;10083:1;10061:7;:19;10069:10;10061:19;;;;;;;;;;;;;;;;:23;10053:58;;;;;;;;;;;;:::i;:::-;;;;;;;;;10124:19;10146:7;:19;10154:10;10146:19;;;;;;;;;;;;;;;;10124:41;;10176:22;10201:11;10176:36;;10316:14;10285:15;:27;10301:10;10285:27;;;;;;;;;;;;;;;;:45;;;;;;;:::i;:::-;;;;;;;;10356:14;10341:11;;:29;;;;;;;:::i;:::-;;;;;;;;10413:11;10381:16;:28;10398:10;10381:28;;;;;;;;;;;;;;;;:43;;;;;;;:::i;:::-;;;;;;;;10466:15;10435:16;:28;10452:10;10435:28;;;;;;;;;;;;;;;:46;;;;10550:11;10523:24;;:38;10501:158;;;;;;;;;;;;:::i;:::-;;;;;;;;;10698:11;10670:24;;:39;;;;;;;:::i;:::-;;;;;;;;9917:800;;9874:843::o:0;5426:76::-;2263:12;:10;:12::i;:::-;2249:26;;:10;:8;:10::i;:::-;:26;;;2227:111;;;;;;;;;;;;:::i;:::-;;;;;;;;;5484:10:::1;:8;:10::i;:::-;5426:76::o:0;137:107::-;182:15;225:10;210:26;;137:107;:::o;3159:196::-;3221:19;3243:9;;;;;;;;;;;3221:31;;3275:11;3263:9;;:23;;;;;;;;;;;;;;;;;;3335:11;3302:45;;3322:11;3302:45;;;;;;;;;;;;3210:145;3159:196;:::o;849:108::-;920:8;:6;:8::i;:::-;919:9;911:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;849:108::o;8112:281::-;8180:5;8152:13;:25;8166:10;8152:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;8218:1;8196:7;:19;8204:10;8196:19;;;;;;;;;;;;;;;:23;;;;8261:1;8230:16;:28;8247:10;8230:28;;;;;;;;;;;;;;;:32;;;;8304:1;8273:16;:28;8290:10;8273:28;;;;;;;;;;;;;;;:32;;;;8342:1;8316:11;:23;8328:10;8316:23;;;;;;;;;;;;;;;:27;;;;8384:1;8354:15;:27;8370:10;8354:27;;;;;;;;;;;;;;;:31;;;;8112:281::o;11354:412::-;11407:7;11427:25;11472:5;11455:14;;:22;;;;:::i;:::-;11427:50;;11488:16;11563:17;11526:11;:20;11538:7;11526:20;;;;;;;;;;;;;;;;11508:15;:38;;;;:::i;:::-;11507:73;;;;:::i;:::-;11488:92;;11591:18;11661:8;11634:15;:24;11650:7;11634:24;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;11620:50;;11694:34;11708:7;11717:10;11694:13;:34::i;:::-;11681:47;;11748:10;11741:17;;;;;11354:412;;;:::o;2978:173::-;3034:16;3053:6;;;;;;;;;;;3034:25;;3079:8;3070:6;;:17;;;;;;;;;;;;;;;;;;3134:8;3103:40;;3124:8;3103:40;;;;;;;;;;;;3023:128;2978:173;:::o;6366:556::-;6423:19;6445:5;;;;;;;;;;;:15;;;6461:10;6445:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6423:49;;6491:13;;;;;;;;;;;6483:45;;;;;;;;;;;;:::i;:::-;;;;;;;;;6562:6;6547:11;:21;;6539:51;;;;;;;;;;;;:::i;:::-;;;;;;;;;6601:5;;;;;;;;;;;:18;;;6620:10;6640:4;6647:6;6601:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6696:6;6665:15;:27;6681:10;6665:27;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;6728:6;6713:11;;:21;;;;;;;:::i;:::-;;;;;;;;6771:15;6745:11;:23;6757:10;6745:23;;;;;;;;;;;;;;;:41;;;;6910:4;6882:13;:25;6896:10;6882:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;6412:510;6366:556;:::o;8401:365::-;8448:25;8493:5;8476:14;;:22;;;;:::i;:::-;8448:50;;8509:16;8587:17;8547:11;:23;8559:10;8547:23;;;;;;;;;;;;;;;;8529:15;:41;;;;:::i;:::-;8528:76;;;;:::i;:::-;8509:95;;8670:8;8640:15;:27;8656:10;8640:27;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;8617:7;:19;8625:10;8617:19;;;;;;;;;;;;;;;:62;;;;8712:46;8726:10;8738:7;:19;8746:10;8738:19;;;;;;;;;;;;;;;;8712:13;:46::i;:::-;8690:7;:19;8698:10;8690:19;;;;;;;;;;;;;;;:68;;;;8437:329;;8401:365::o;8983:170::-;9025:16;9073:4;9044:33;;:13;:25;9058:10;9044:25;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;9025:52;;9092:11;9088:58;;9128:6;:4;:6::i;:::-;9088:58;9014:139;8983:170::o;1081:118::-;631:19;:17;:19::i;:::-;1151:4:::1;1141:7;::::0;:14:::1;;;;;;;;;;;;;;;;;;1171:20;1178:12;:10;:12::i;:::-;1171:20;;;;;;:::i;:::-;;;;;;;;1081:118::o:0;1207:120::-;711:16;:14;:16::i;:::-;1276:5:::1;1266:7:::0;::::1;:15;;;;;;;;;;;;;;;;;;1297:22;1306:12;:10;:12::i;:::-;1297:22;;;;;;:::i;:::-;;;;;;;;1207:120::o:0;11774:373::-;11873:7;11893:15;11953:16;:25;11970:7;11953:25;;;;;;;;;;;;;;;;11946:3;11929:12;11925:1;:16;;;;:::i;:::-;11923:26;;;;:::i;:::-;:55;11919:196;;12034:16;:25;12051:7;12034:25;;;;;;;;;;;;;;;;12028:3;12011:12;12007:1;:16;;;;:::i;:::-;12005:26;;;;:::i;:::-;:54;;;;:::i;:::-;11995:64;;11919:196;;;12102:1;12092:11;;11919:196;12132:7;12125:14;;;11774:373;;;;:::o;8774:201::-;631:19;:17;:19::i;:::-;8899:11:::1;;8868:16;:28;8885:10;8868:28;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;8850:15;:60;8828:139;;;;;;;;;;;;:::i;:::-;;;;;;;;;8774:201::o:0;965:108::-;1032:8;:6;:8::i;:::-;1024:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;965:108::o;88:117:1:-;197:1;194;187:12;334:126;371:7;411:42;404:5;400:54;389:65;;334:126;;;:::o;466:96::-;503:7;532:24;550:5;532:24;:::i;:::-;521:35;;466:96;;;:::o;568:122::-;641:24;659:5;641:24;:::i;:::-;634:5;631:35;621:63;;680:1;677;670:12;621:63;568:122;:::o;696:139::-;742:5;780:6;767:20;758:29;;796:33;823:5;796:33;:::i;:::-;696:139;;;;:::o;841:329::-;900:6;949:2;937:9;928:7;924:23;920:32;917:119;;;955:79;;:::i;:::-;917:119;1075:1;1100:53;1145:7;1136:6;1125:9;1121:22;1100:53;:::i;:::-;1090:63;;1046:117;841:329;;;;:::o;1176:77::-;1213:7;1242:5;1231:16;;1176:77;;;:::o;1259:118::-;1346:24;1364:5;1346:24;:::i;:::-;1341:3;1334:37;1259:118;;:::o;1383:222::-;1476:4;1514:2;1503:9;1499:18;1491:26;;1527:71;1595:1;1584:9;1580:17;1571:6;1527:71;:::i;:::-;1383:222;;;;:::o;1611:122::-;1684:24;1702:5;1684:24;:::i;:::-;1677:5;1674:35;1664:63;;1723:1;1720;1713:12;1664:63;1611:122;:::o;1739:139::-;1785:5;1823:6;1810:20;1801:29;;1839:33;1866:5;1839:33;:::i;:::-;1739:139;;;;:::o;1884:329::-;1943:6;1992:2;1980:9;1971:7;1967:23;1963:32;1960:119;;;1998:79;;:::i;:::-;1960:119;2118:1;2143:53;2188:7;2179:6;2168:9;2164:22;2143:53;:::i;:::-;2133:63;;2089:117;1884:329;;;;:::o;2219:90::-;2253:7;2296:5;2289:13;2282:21;2271:32;;2219:90;;;:::o;2315:109::-;2396:21;2411:5;2396:21;:::i;:::-;2391:3;2384:34;2315:109;;:::o;2430:210::-;2517:4;2555:2;2544:9;2540:18;2532:26;;2568:65;2630:1;2619:9;2615:17;2606:6;2568:65;:::i;:::-;2430:210;;;;:::o;2646:118::-;2733:24;2751:5;2733:24;:::i;:::-;2728:3;2721:37;2646:118;;:::o;2770:222::-;2863:4;2901:2;2890:9;2886:18;2878:26;;2914:71;2982:1;2971:9;2967:17;2958:6;2914:71;:::i;:::-;2770:222;;;;:::o;2998:60::-;3026:3;3047:5;3040:12;;2998:60;;;:::o;3064:142::-;3114:9;3147:53;3165:34;3174:24;3192:5;3174:24;:::i;:::-;3165:34;:::i;:::-;3147:53;:::i;:::-;3134:66;;3064:142;;;:::o;3212:126::-;3262:9;3295:37;3326:5;3295:37;:::i;:::-;3282:50;;3212:126;;;:::o;3344:140::-;3408:9;3441:37;3472:5;3441:37;:::i;:::-;3428:50;;3344:140;;;:::o;3490:159::-;3591:51;3636:5;3591:51;:::i;:::-;3586:3;3579:64;3490:159;;:::o;3655:250::-;3762:4;3800:2;3789:9;3785:18;3777:26;;3813:85;3895:1;3884:9;3880:17;3871:6;3813:85;:::i;:::-;3655:250;;;;:::o;3911:169::-;3995:11;4029:6;4024:3;4017:19;4069:4;4064:3;4060:14;4045:29;;3911:169;;;;:::o;4086:222::-;4226:34;4222:1;4214:6;4210:14;4203:58;4295:5;4290:2;4282:6;4278:15;4271:30;4086:222;:::o;4314:366::-;4456:3;4477:67;4541:2;4536:3;4477:67;:::i;:::-;4470:74;;4553:93;4642:3;4553:93;:::i;:::-;4671:2;4666:3;4662:12;4655:19;;4314:366;;;:::o;4686:419::-;4852:4;4890:2;4879:9;4875:18;4867:26;;4939:9;4933:4;4929:20;4925:1;4914:9;4910:17;4903:47;4967:131;5093:4;4967:131;:::i;:::-;4959:139;;4686:419;;;:::o;5111:225::-;5251:34;5247:1;5239:6;5235:14;5228:58;5320:8;5315:2;5307:6;5303:15;5296:33;5111:225;:::o;5342:366::-;5484:3;5505:67;5569:2;5564:3;5505:67;:::i;:::-;5498:74;;5581:93;5670:3;5581:93;:::i;:::-;5699:2;5694:3;5690:12;5683:19;;5342:366;;;:::o;5714:419::-;5880:4;5918:2;5907:9;5903:18;5895:26;;5967:9;5961:4;5957:20;5953:1;5942:9;5938:17;5931:47;5995:131;6121:4;5995:131;:::i;:::-;5987:139;;5714:419;;;:::o;6139:181::-;6279:33;6275:1;6267:6;6263:14;6256:57;6139:181;:::o;6326:366::-;6468:3;6489:67;6553:2;6548:3;6489:67;:::i;:::-;6482:74;;6565:93;6654:3;6565:93;:::i;:::-;6683:2;6678:3;6674:12;6667:19;;6326:366;;;:::o;6698:419::-;6864:4;6902:2;6891:9;6887:18;6879:26;;6951:9;6945:4;6941:20;6937:1;6926:9;6922:17;6915:47;6979:131;7105:4;6979:131;:::i;:::-;6971:139;;6698:419;;;:::o;7123:167::-;7263:19;7259:1;7251:6;7247:14;7240:43;7123:167;:::o;7296:366::-;7438:3;7459:67;7523:2;7518:3;7459:67;:::i;:::-;7452:74;;7535:93;7624:3;7535:93;:::i;:::-;7653:2;7648:3;7644:12;7637:19;;7296:366;;;:::o;7668:419::-;7834:4;7872:2;7861:9;7857:18;7849:26;;7921:9;7915:4;7911:20;7907:1;7896:9;7892:17;7885:47;7949:131;8075:4;7949:131;:::i;:::-;7941:139;;7668:419;;;:::o;8093:180::-;8141:77;8138:1;8131:88;8238:4;8235:1;8228:15;8262:4;8259:1;8252:15;8279:194;8319:4;8339:20;8357:1;8339:20;:::i;:::-;8334:25;;8373:20;8391:1;8373:20;:::i;:::-;8368:25;;8417:1;8414;8410:9;8402:17;;8441:1;8435:4;8432:11;8429:37;;;8446:18;;:::i;:::-;8429:37;8279:194;;;;:::o;8479:332::-;8600:4;8638:2;8627:9;8623:18;8615:26;;8651:71;8719:1;8708:9;8704:17;8695:6;8651:71;:::i;:::-;8732:72;8800:2;8789:9;8785:18;8776:6;8732:72;:::i;:::-;8479:332;;;;;:::o;8817:116::-;8887:21;8902:5;8887:21;:::i;:::-;8880:5;8877:32;8867:60;;8923:1;8920;8913:12;8867:60;8817:116;:::o;8939:137::-;8993:5;9024:6;9018:13;9009:22;;9040:30;9064:5;9040:30;:::i;:::-;8939:137;;;;:::o;9082:345::-;9149:6;9198:2;9186:9;9177:7;9173:23;9169:32;9166:119;;;9204:79;;:::i;:::-;9166:119;9324:1;9349:61;9402:7;9393:6;9382:9;9378:22;9349:61;:::i;:::-;9339:71;;9295:125;9082:345;;;;:::o;9433:182::-;9573:34;9569:1;9561:6;9557:14;9550:58;9433:182;:::o;9621:366::-;9763:3;9784:67;9848:2;9843:3;9784:67;:::i;:::-;9777:74;;9860:93;9949:3;9860:93;:::i;:::-;9978:2;9973:3;9969:12;9962:19;;9621:366;;;:::o;9993:419::-;10159:4;10197:2;10186:9;10182:18;10174:26;;10246:9;10240:4;10236:20;10232:1;10221:9;10217:17;10210:47;10274:131;10400:4;10274:131;:::i;:::-;10266:139;;9993:419;;;:::o;10418:173::-;10558:25;10554:1;10546:6;10542:14;10535:49;10418:173;:::o;10597:366::-;10739:3;10760:67;10824:2;10819:3;10760:67;:::i;:::-;10753:74;;10836:93;10925:3;10836:93;:::i;:::-;10954:2;10949:3;10945:12;10938:19;;10597:366;;;:::o;10969:419::-;11135:4;11173:2;11162:9;11158:18;11150:26;;11222:9;11216:4;11212:20;11208:1;11197:9;11193:17;11186:47;11250:131;11376:4;11250:131;:::i;:::-;11242:139;;10969:419;;;:::o;11394:143::-;11451:5;11482:6;11476:13;11467:22;;11498:33;11525:5;11498:33;:::i;:::-;11394:143;;;;:::o;11543:351::-;11613:6;11662:2;11650:9;11641:7;11637:23;11633:32;11630:119;;;11668:79;;:::i;:::-;11630:119;11788:1;11813:64;11869:7;11860:6;11849:9;11845:22;11813:64;:::i;:::-;11803:74;;11759:128;11543:351;;;;:::o;11900:442::-;12049:4;12087:2;12076:9;12072:18;12064:26;;12100:71;12168:1;12157:9;12153:17;12144:6;12100:71;:::i;:::-;12181:72;12249:2;12238:9;12234:18;12225:6;12181:72;:::i;:::-;12263;12331:2;12320:9;12316:18;12307:6;12263:72;:::i;:::-;11900:442;;;;;;:::o;12348:191::-;12388:3;12407:20;12425:1;12407:20;:::i;:::-;12402:25;;12441:20;12459:1;12441:20;:::i;:::-;12436:25;;12484:1;12481;12477:9;12470:16;;12505:3;12502:1;12499:10;12496:36;;;12512:18;;:::i;:::-;12496:36;12348:191;;;;:::o;12545:174::-;12685:26;12681:1;12673:6;12669:14;12662:50;12545:174;:::o;12725:366::-;12867:3;12888:67;12952:2;12947:3;12888:67;:::i;:::-;12881:74;;12964:93;13053:3;12964:93;:::i;:::-;13082:2;13077:3;13073:12;13066:19;;12725:366;;;:::o;13097:419::-;13263:4;13301:2;13290:9;13286:18;13278:26;;13350:9;13344:4;13340:20;13336:1;13325:9;13321:17;13314:47;13378:131;13504:4;13378:131;:::i;:::-;13370:139;;13097:419;;;:::o;13522:180::-;13570:77;13567:1;13560:88;13667:4;13664:1;13657:15;13691:4;13688:1;13681:15;13708:185;13748:1;13765:20;13783:1;13765:20;:::i;:::-;13760:25;;13799:20;13817:1;13799:20;:::i;:::-;13794:25;;13838:1;13828:35;;13843:18;;:::i;:::-;13828:35;13885:1;13882;13878:9;13873:14;;13708:185;;;;:::o;13899:241::-;14039:34;14035:1;14027:6;14023:14;14016:58;14108:24;14103:2;14095:6;14091:15;14084:49;13899:241;:::o;14146:366::-;14288:3;14309:67;14373:2;14368:3;14309:67;:::i;:::-;14302:74;;14385:93;14474:3;14385:93;:::i;:::-;14503:2;14498:3;14494:12;14487:19;;14146:366;;;:::o;14518:419::-;14684:4;14722:2;14711:9;14707:18;14699:26;;14771:9;14765:4;14761:20;14757:1;14746:9;14742:17;14735:47;14799:131;14925:4;14799:131;:::i;:::-;14791:139;;14518:419;;;:::o;14943:220::-;15083:34;15079:1;15071:6;15067:14;15060:58;15152:3;15147:2;15139:6;15135:15;15128:28;14943:220;:::o;15169:366::-;15311:3;15332:67;15396:2;15391:3;15332:67;:::i;:::-;15325:74;;15408:93;15497:3;15408:93;:::i;:::-;15526:2;15521:3;15517:12;15510:19;;15169:366;;;:::o;15541:419::-;15707:4;15745:2;15734:9;15730:18;15722:26;;15794:9;15788:4;15784:20;15780:1;15769:9;15765:17;15758:47;15822:131;15948:4;15822:131;:::i;:::-;15814:139;;15541:419;;;:::o;15966:294::-;16106:34;16102:1;16094:6;16090:14;16083:58;16175:34;16170:2;16162:6;16158:15;16151:59;16244:8;16239:2;16231:6;16227:15;16220:33;15966:294;:::o;16266:366::-;16408:3;16429:67;16493:2;16488:3;16429:67;:::i;:::-;16422:74;;16505:93;16594:3;16505:93;:::i;:::-;16623:2;16618:3;16614:12;16607:19;;16266:366;;;:::o;16638:419::-;16804:4;16842:2;16831:9;16827:18;16819:26;;16891:9;16885:4;16881:20;16877:1;16866:9;16862:17;16855:47;16919:131;17045:4;16919:131;:::i;:::-;16911:139;;16638:419;;;:::o;17063:172::-;17203:24;17199:1;17191:6;17187:14;17180:48;17063:172;:::o;17241:366::-;17383:3;17404:67;17468:2;17463:3;17404:67;:::i;:::-;17397:74;;17480:93;17569:3;17480:93;:::i;:::-;17598:2;17593:3;17589:12;17582:19;;17241:366;;;:::o;17613:419::-;17779:4;17817:2;17806:9;17802:18;17794:26;;17866:9;17860:4;17856:20;17852:1;17841:9;17837:17;17830:47;17894:131;18020:4;17894:131;:::i;:::-;17886:139;;17613:419;;;:::o;18038:166::-;18178:18;18174:1;18166:6;18162:14;18155:42;18038:166;:::o;18210:366::-;18352:3;18373:67;18437:2;18432:3;18373:67;:::i;:::-;18366:74;;18449:93;18538:3;18449:93;:::i;:::-;18567:2;18562:3;18558:12;18551:19;;18210:366;;;:::o;18582:419::-;18748:4;18786:2;18775:9;18771:18;18763:26;;18835:9;18829:4;18825:20;18821:1;18810:9;18806:17;18799:47;18863:131;18989:4;18863:131;:::i;:::-;18855:139;;18582:419;;;:::o;19007:410::-;19047:7;19070:20;19088:1;19070:20;:::i;:::-;19065:25;;19104:20;19122:1;19104:20;:::i;:::-;19099:25;;19159:1;19156;19152:9;19181:30;19199:11;19181:30;:::i;:::-;19170:41;;19360:1;19351:7;19347:15;19344:1;19341:22;19321:1;19314:9;19294:83;19271:139;;19390:18;;:::i;:::-;19271:139;19055:362;19007:410;;;;:::o;19423:169::-;19563:21;19559:1;19551:6;19547:14;19540:45;19423:169;:::o;19598:366::-;19740:3;19761:67;19825:2;19820:3;19761:67;:::i;:::-;19754:74;;19837:93;19926:3;19837:93;:::i;:::-;19955:2;19950:3;19946:12;19939:19;;19598:366;;;:::o;19970:419::-;20136:4;20174:2;20163:9;20159:18;20151:26;;20223:9;20217:4;20213:20;20209:1;20198:9;20194:17;20187:47;20251:131;20377:4;20251:131;:::i;:::-;20243:139;;19970:419;;;:::o;20395:134::-;20453:9;20486:37;20517:5;20486:37;:::i;:::-;20473:50;;20395:134;;;:::o;20535:147::-;20630:45;20669:5;20630:45;:::i;:::-;20625:3;20618:58;20535:147;;:::o;20688:238::-;20789:4;20827:2;20816:9;20812:18;20804:26;;20840:79;20916:1;20905:9;20901:17;20892:6;20840:79;:::i;:::-;20688:238;;;;:::o;20932:179::-;21072:31;21068:1;21060:6;21056:14;21049:55;20932:179;:::o;21117:366::-;21259:3;21280:67;21344:2;21339:3;21280:67;:::i;:::-;21273:74;;21356:93;21445:3;21356:93;:::i;:::-;21474:2;21469:3;21465:12;21458:19;;21117:366;;;:::o;21489:419::-;21655:4;21693:2;21682:9;21678:18;21670:26;;21742:9;21736:4;21732:20;21728:1;21717:9;21713:17;21706:47;21770:131;21896:4;21770:131;:::i;:::-;21762:139;;21489:419;;;:::o;21914:170::-;22054:22;22050:1;22042:6;22038:14;22031:46;21914:170;:::o;22090:366::-;22232:3;22253:67;22317:2;22312:3;22253:67;:::i;:::-;22246:74;;22329:93;22418:3;22329:93;:::i;:::-;22447:2;22442:3;22438:12;22431:19;;22090:366;;;:::o;22462:419::-;22628:4;22666:2;22655:9;22651:18;22643:26;;22715:9;22709:4;22705:20;22701:1;22690:9;22686:17;22679:47;22743:131;22869:4;22743:131;:::i;:::-;22735:139;;22462:419;;;:::o

Swarm Source

ipfs://a1ec7939b9706151fa561fdb63311d10aa0e41c0ab5e586508be108c4790ec87

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  ]

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.