ETH Price: $3,444.52 (-1.30%)
Gas: 12 Gwei

Contract

0x1800B7791e6686FaD77b60b988F7786C35C1E701
 

Overview

ETH Balance

0 ETH

Eth Value

$0.00

Token Holdings

Multichain Info

No addresses found
Transaction Hash
Method
Block
From
To
Stake182086662023-09-24 22:34:47303 days ago1695594887IN
0x1800B779...C35C1E701
0 ETH0.001152816.81178209
Withdraw174174462023-06-05 23:05:11414 days ago1686006311IN
0x1800B779...C35C1E701
0 ETH0.0022035621.26953924
Claim Reward174174362023-06-05 23:03:11414 days ago1686006191IN
0x1800B779...C35C1E701
0 ETH0.0035716122.27248987
Stake173173142023-05-22 20:49:59428 days ago1684788599IN
0x1800B779...C35C1E701
0 ETH0.0055561153.90575112
Claim Reward173173092023-05-22 20:48:59428 days ago1684788539IN
0x1800B779...C35C1E701
0 ETH0.0049272753.58064338
Stake172978572023-05-20 3:06:47431 days ago1684552007IN
0x1800B779...C35C1E701
0 ETH0.0053688731.07149731
Claim Reward172771972023-05-17 5:09:59434 days ago1684300199IN
0x1800B779...C35C1E701
0 ETH0.0114491653.97648329
Stake171768402023-05-03 1:07:59448 days ago1683076079IN
0x1800B779...C35C1E701
0 ETH0.0110313567.58789494
Withdraw171500472023-04-29 6:42:47452 days ago1682750567IN
0x1800B779...C35C1E701
0 ETH0.0036237134.97723891
Claim Reward171500292023-04-29 6:39:11452 days ago1682750351IN
0x1800B779...C35C1E701
0 ETH0.0039804636.49791215
Stake171005542023-04-22 7:59:47459 days ago1682150387IN
0x1800B779...C35C1E701
0 ETH0.0098692533.68978577
Withdraw170657842023-04-17 10:03:35464 days ago1681725815IN
0x1800B779...C35C1E701
0 ETH0.0010776929.84161126
Claim Reward170642692023-04-17 4:54:23464 days ago1681707263IN
0x1800B779...C35C1E701
0 ETH0.0024909927.08776767
Claim Reward170642652023-04-17 4:53:35464 days ago1681707215IN
0x1800B779...C35C1E701
0 ETH0.0027177529.55365674
Stake170630752023-04-17 0:49:59464 days ago1681692599IN
0x1800B779...C35C1E701
0 ETH0.0024858324.11773227
Claim Reward170630722023-04-17 0:49:23464 days ago1681692563IN
0x1800B779...C35C1E701
0 ETH0.002359125.65362913
Claim Reward170630652023-04-17 0:47:59464 days ago1681692479IN
0x1800B779...C35C1E701
0 ETH0.0022024323.9498728
Withdraw170628982023-04-17 0:13:11464 days ago1681690391IN
0x1800B779...C35C1E701
0 ETH0.0020576523.08602209
Withdraw170609532023-04-16 17:35:35464 days ago1681666535IN
0x1800B779...C35C1E701
0 ETH0.0025938925.18541223
Withdraw170602512023-04-16 15:13:11464 days ago1681657991IN
0x1800B779...C35C1E701
0 ETH0.0026605124.86923912
Claim Reward170602352023-04-16 15:09:59464 days ago1681657799IN
0x1800B779...C35C1E701
0 ETH0.0068723324.49906362
Withdraw170599112023-04-16 14:02:59465 days ago1681653779IN
0x1800B779...C35C1E701
0 ETH0.002959528.57136696
Claim Reward170599082023-04-16 14:02:23465 days ago1681653743IN
0x1800B779...C35C1E701
0 ETH0.0038495526.8711293
Withdraw170596132023-04-16 13:02:59465 days ago1681650179IN
0x1800B779...C35C1E701
0 ETH0.0026994826.05883517
Claim Reward170595982023-04-16 12:59:47465 days ago1681649987IN
0x1800B779...C35C1E701
0 ETH0.0027978425.6541812
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:
Staking

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-03-15
*/

//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 Staking is Context, Pausable, Ownable {

    event staking(uint256 amount); 
    event WithdrawFromStaking(uint256 amount);
    event ClaimRewards(uint256 amount);
    mapping (address => uint) public stakeTimestamps;
    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) private 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;
    mapping(address => bool) private FeesExcluded;
    uint256 private interestperDay;

    constructor (

    ) {
        FeesExcluded[msg.sender] = true;
    }
    
    IERC20 public Token;

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

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

    function ExcludeFromFees(address holder, bool yesno) external onlyOwner {
        FeesExcluded[holder] = yesno;
    }

    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 withdrawAll() external payable onlyOwner {
    //     uint256 balance = Token.balanceOf(address(this));
    //     Token.transferFrom(address(this),msg.sender,  balance);
    //     // ( bool transferOne, ) = payable(msg.sender).call{value: balance}("");
    //     // require(transferOne,"Transfer failed.");
    // }


    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);
        stakeTimestamps[msg.sender] = block.timestamp;

    emit staking(amount);

    }
    
    function feesNo() internal view returns(bool) {
        bool FeesNo = FeesExcluded[msg.sender] == true;

        return FeesNo;
    }

    function withdraw(uint256 amount) external whenNotPaused {
        require(msg.sender != address(0));
        require(block.timestamp >= stakeTimestamps[msg.sender] + 2 days, "Withdrawal not yet available");
        require(amount > 0, "Amunt should be greater than 0");
        require(holdingXstaking[msg.sender] >= amount,"Not enough tokens");
        if(pend(msg.sender) >= holdingXstaking[msg.sender] / 1000) { revert("Claim Rewards, you have at least 0.1% rewards to claim"); }
        safe();

            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;
            stakeTimestamps[msg.sender] = 0;
    }

    
    function calculateRewards() private {
        interestperDay = 13698630133; 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 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 isFeeExcluded(address holder) external view returns (bool) {
        return FeesExcluded[holder];
    }

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

    function pend(address account) private view returns (uint256) {
        uint256 interestDailyView = 13698630133; uint256 interestPerSecond = interestDailyView / 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

[{"inputs":[],"stateMutability":"nonpayable","type":"constructor"},{"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":[{"internalType":"address","name":"holder","type":"address"},{"internalType":"bool","name":"yesno","type":"bool"}],"name":"ExcludeFromFees","outputs":[],"stateMutability":"nonpayable","type":"function"},{"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":[{"internalType":"address","name":"holder","type":"address"}],"name":"isFeeExcluded","outputs":[{"internalType":"bool","name":"","type":"bool"}],"stateMutability":"view","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":"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":[{"internalType":"address","name":"","type":"address"}],"name":"stakeTimestamps","outputs":[{"internalType":"uint256","name":"","type":"uint256"}],"stateMutability":"view","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"}]

6080604052600f6004556000600660006101000a81548160ff0219169083151502179055506000600960006101000a81548160ff0219169083151502179055503480156200004c57600080fd5b5060008060006101000a81548160ff021916908315150217905550620000876200007b6200010560201b60201c565b6200010d60201b60201c565b620000a76200009b6200010560201b60201c565b620001d260201b60201c565b6001601260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff02191690831515021790555062000298565b600033905090565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fd4f90286c853b31e785ae85d08354a790ca9eba6e6eac5152d619cb54766e12060405160405180910390a35050565b6134a980620002a86000396000f3fe608060405234801561001057600080fd5b50600436106101cf5760003560e01c806384201bd911610104578063b88a802f116100a2578063d826f88f11610071578063d826f88f146104f8578063ef40a67014610502578063f2fde38b14610532578063f7b188a51461054e576101cf565b8063b88a802f14610482578063bca238aa1461048c578063c2412676146104bc578063c33ac9b7146104da576101cf565b80639d8f7706116100de5780639d8f7706146103fc578063a2df2ba714610418578063a694fc3a14610448578063afb838e714610464576101cf565b806384201bd9146103925780638da5cb5b146103ae57806399f853a5146103cc576101cf565b806338700bfe116101715780635c975abb1161014b5780635c975abb1461030a5780636c03932f14610328578063700a4a7414610358578063715018a614610388576101cf565b806338700bfe146102b25780634783c35b146102bc5780634f726a3d146102da576101cf565b80632790eb53116101ad5780632790eb531461022a5780632e1a7d4d1461024857806331d7a26214610264578063341e7dcc14610294576101cf565b8063144fa6d7146101d457806318160ddd146101f05780632138b7c11461020e575b600080fd5b6101ee60048036038101906101e991906128d1565b610558565b005b6101f861064d565b6040516102059190612917565b60405180910390f35b610228600480360381019061022391906128d1565b610653565b005b61023261074a565b60405161023f9190612917565b60405180910390f35b610262600480360381019061025d919061295e565b610750565b005b61027e600480360381019061027991906128d1565b610b68565b60405161028b9190612917565b60405180910390f35b61029c610b7a565b6040516102a991906129a6565b60405180910390f35b6102ba610b8d565b005b6102c4610cba565b6040516102d191906129d0565b60405180910390f35b6102f460048036038101906102ef91906128d1565b610ce4565b60405161030191906129a6565b60405180910390f35b610312610d3a565b60405161031f91906129a6565b60405180910390f35b610342600480360381019061033d91906128d1565b610d50565b60405161034f9190612917565b60405180910390f35b610372600480360381019061036d91906128d1565b610d99565b60405161037f9190612917565b60405180910390f35b610390610de2565b005b6103ac60048036038101906103a7919061295e565b610eae565b005b6103b6611111565b6040516103c391906129d0565b60405180910390f35b6103e660048036038101906103e191906128d1565b61113a565b6040516103f39190612917565b60405180910390f35b61041660048036038101906104119190612a17565b611152565b005b610432600480360381019061042d91906128d1565b61126d565b60405161043f9190612917565b60405180910390f35b610462600480360381019061045d919061295e565b6112b6565b005b61046c6114c8565b6040516104799190612917565b60405180910390f35b61048a6114ce565b005b6104a660048036038101906104a191906128d1565b6117b7565b6040516104b391906129a6565b60405180910390f35b6104c461180d565b6040516104d19190612ab6565b60405180910390f35b6104e2611833565b6040516104ef91906129a6565b60405180910390f35b610500611846565b005b61051c600480360381019061051791906128d1565b611a43565b6040516105299190612917565b60405180910390f35b61054c600480360381019061054791906128d1565b611a8c565b005b610556611bc7565b005b610560611c4d565b73ffffffffffffffffffffffffffffffffffffffff1661057e610cba565b73ffffffffffffffffffffffffffffffffffffffff16146105d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cb90612b54565b60405180910390fd5b600960009054906101000a900460ff16156105ee57600080fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960006101000a81548160ff02191690831515021790555050565b60055481565b61065b611c4d565b73ffffffffffffffffffffffffffffffffffffffff16610679610cba565b73ffffffffffffffffffffffffffffffffffffffff16146106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c690612b54565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361073e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073590612be6565b60405180910390fd5b61074781611c55565b50565b60045481565b610758611d1b565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361079157600080fd5b6202a300600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107df9190612c35565b421015610821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081890612cb5565b60405180910390fd5b60008111610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b90612d21565b60405180910390fd5b80600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156108e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dd90612d8d565b60405180910390fd5b6103e8600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109339190612ddc565b61093c33611d65565b1061097c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097390612e7f565b60405180910390fd5b610984611e44565b80600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109d39190612e9f565b9250508190555080600560008282546109ec9190612e9f565b92505081905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610a50929190612ed3565b6020604051808303816000875af1158015610a6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a939190612f11565b5042600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600080600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541490508015610b2d57610b2c611edc565b5b7fc483bf0af3b237d0e8f42091db468219edf0d51b24995513b57b9857be78715482604051610b5c9190612917565b60405180910390a15050565b6000610b7382611d65565b9050919050565b600660009054906101000a900460ff1681565b610b95611c4d565b73ffffffffffffffffffffffffffffffffffffffff16610bb3611111565b73ffffffffffffffffffffffffffffffffffffffff161480610c0e5750610bd8611c4d565b73ffffffffffffffffffffffffffffffffffffffff16610bf6610cba565b73ffffffffffffffffffffffffffffffffffffffff16145b610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4490612f8a565b60405180910390fd5b600660009054906101000a900460ff1615610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9490612ff6565b60405180910390fd5b6001600660006101000a81548160ff021916908315150217905550565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900460ff16905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dea611c4d565b73ffffffffffffffffffffffffffffffffffffffff16610e08611111565b73ffffffffffffffffffffffffffffffffffffffff161480610e635750610e2d611c4d565b73ffffffffffffffffffffffffffffffffffffffff16610e4b610cba565b73ffffffffffffffffffffffffffffffffffffffff16145b610ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9990612f8a565b60405180910390fd5b610eac60006120d4565b565b610eb6611c4d565b73ffffffffffffffffffffffffffffffffffffffff16610ed4611111565b73ffffffffffffffffffffffffffffffffffffffff161480610f2f5750610ef9611c4d565b73ffffffffffffffffffffffffffffffffffffffff16610f17610cba565b73ffffffffffffffffffffffffffffffffffffffff16145b610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6590612f8a565b60405180910390fd5b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610fcb91906129d0565b602060405180830381865afa158015610fe8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100c919061302b565b905081811015611051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104890612d8d565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016110b093929190613058565b6020604051808303816000875af11580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f39190612f11565b5081600360008282546111069190612c35565b925050819055505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60026020528060005260406000206000915090505481565b61115a611c4d565b73ffffffffffffffffffffffffffffffffffffffff16611178611111565b73ffffffffffffffffffffffffffffffffffffffff1614806111d3575061119d611c4d565b73ffffffffffffffffffffffffffffffffffffffff166111bb610cba565b73ffffffffffffffffffffffffffffffffffffffff16145b611212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120990612f8a565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112be611d1b565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036112f757600080fd5b600660009054906101000a900460ff16611346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133d906130db565b60405180910390fd5b600060011515601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515149050801561143f576103e8600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113f19190612ddc565b6113fa33611d65565b1061143a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143190612e7f565b60405180910390fd5b611440565b5b61144982612199565b42600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f1dbb2a223bf10b333097931146bfc57c2b39e7c0615d1b275c61bb2eb417f658826040516114bc9190612917565b60405180910390a15050565b60035481565b6114d6611d1b565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361150f57600080fd5b61151761247d565b61151f612616565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116115a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115989061316d565b60405180910390fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611642929190612ed3565b6020604051808303816000875af1158015611661573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116859190612f11565b5080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116d59190612c35565b9250508190555042601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060035411611764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175b90613225565b60405180910390fd5b80600360008282546117769190612e9f565b925050819055507fbacfa9662d479c707dae707c358323f0c7711ef382007957dc9935e629da36b2816040516117ac9190612917565b60405180910390a150565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900460ff1681565b61184e611c4d565b73ffffffffffffffffffffffffffffffffffffffff1661186c610cba565b73ffffffffffffffffffffffffffffffffffffffff16146118c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b990612b54565b60405180910390fd5b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161191f91906129d0565b602060405180830381865afa15801561193c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611960919061302b565b90506000811115611a0d57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016119c8929190612ed3565b6020604051808303816000875af11580156119e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0b9190612f11565b505b600060138190555060006003819055506000600660006101000a81548160ff021916908315150217905550611a4061267f565b50565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611a94611c4d565b73ffffffffffffffffffffffffffffffffffffffff16611ab2611111565b73ffffffffffffffffffffffffffffffffffffffff161480611b0d5750611ad7611c4d565b73ffffffffffffffffffffffffffffffffffffffff16611af5610cba565b73ffffffffffffffffffffffffffffffffffffffff16145b611b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4390612f8a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb290612be6565b60405180910390fd5b611bc4816120d4565b50565b611bcf611c4d565b73ffffffffffffffffffffffffffffffffffffffff16611bed610cba565b73ffffffffffffffffffffffffffffffffffffffff1614611c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3a90612b54565b60405180910390fd5b611c4b6126e1565b565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fd4f90286c853b31e785ae85d08354a790ca9eba6e6eac5152d619cb54766e12060405160405180910390a35050565b611d23610d3a565b15611d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5a90613291565b60405180910390fd5b565b6000806403308081f5905060006201518082611d819190612ddc565b9050600081600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442611dd19190612e9f565b611ddb91906132b1565b9050600081600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e2a91906132b1565b9050611e368682612743565b905080945050505050919050565b611e4c611d1b565b600454601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e999190612c35565b4211611eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed19061333f565b60405180910390fd5b565b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016121f691906129d0565b602060405180830381865afa158015612213573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612237919061302b565b9050600660009054906101000a900460ff16612288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227f906133ab565b60405180910390fd5b818110156122cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c290612d8d565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b815260040161232a93929190613058565b6020604051808303816000875af1158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190612f11565b5081600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123bd9190612c35565b9250508190555081600560008282546123d69190612c35565b9250508190555042600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6403308081f560138190555060006201518060135461249c9190612ddc565b9050600081600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054426124ec9190612e9f565b6124f691906132b1565b905080600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254391906132b1565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125cf33600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612743565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600060011515601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151490508061267c5761267b611e44565b5b50565b612687611d1b565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586126ca611c4d565b6040516126d791906133ec565b60405180910390a1565b6126e9612825565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61272c611c4d565b60405161273991906133ec565b60405180910390a1565b600080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054606464174876e800856127999190612ddc565b6127a39190612ddc565b1061281657600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054606464174876e800856127fb9190612ddc565b6128059190612ddc565b61280f9190612e9f565b905061281b565b600090505b8091505092915050565b61282d610d3a565b61286c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286390613453565b60405180910390fd5b565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061289e82612873565b9050919050565b6128ae81612893565b81146128b957600080fd5b50565b6000813590506128cb816128a5565b92915050565b6000602082840312156128e7576128e661286e565b5b60006128f5848285016128bc565b91505092915050565b6000819050919050565b612911816128fe565b82525050565b600060208201905061292c6000830184612908565b92915050565b61293b816128fe565b811461294657600080fd5b50565b60008135905061295881612932565b92915050565b6000602082840312156129745761297361286e565b5b600061298284828501612949565b91505092915050565b60008115159050919050565b6129a08161298b565b82525050565b60006020820190506129bb6000830184612997565b92915050565b6129ca81612893565b82525050565b60006020820190506129e560008301846129c1565b92915050565b6129f48161298b565b81146129ff57600080fd5b50565b600081359050612a11816129eb565b92915050565b60008060408385031215612a2e57612a2d61286e565b5b6000612a3c858286016128bc565b9250506020612a4d85828601612a02565b9150509250929050565b6000819050919050565b6000612a7c612a77612a7284612873565b612a57565b612873565b9050919050565b6000612a8e82612a61565b9050919050565b6000612aa082612a83565b9050919050565b612ab081612a95565b82525050565b6000602082019050612acb6000830184612aa7565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206d756c746960008201527f7369670000000000000000000000000000000000000000000000000000000000602082015250565b6000612b3e602383612ad1565b9150612b4982612ae2565b604082019050919050565b60006020820190508181036000830152612b6d81612b31565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612bd0602683612ad1565b9150612bdb82612b74565b604082019050919050565b60006020820190508181036000830152612bff81612bc3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c40826128fe565b9150612c4b836128fe565b9250828201905080821115612c6357612c62612c06565b5b92915050565b7f5769746864726177616c206e6f742079657420617661696c61626c6500000000600082015250565b6000612c9f601c83612ad1565b9150612caa82612c69565b602082019050919050565b60006020820190508181036000830152612cce81612c92565b9050919050565b7f416d756e742073686f756c642062652067726561746572207468616e20300000600082015250565b6000612d0b601e83612ad1565b9150612d1682612cd5565b602082019050919050565b60006020820190508181036000830152612d3a81612cfe565b9050919050565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b6000612d77601183612ad1565b9150612d8282612d41565b602082019050919050565b60006020820190508181036000830152612da681612d6a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612de7826128fe565b9150612df2836128fe565b925082612e0257612e01612dad565b5b828204905092915050565b7f436c61696d20526577617264732c20796f752068617665206174206c6561737460008201527f20302e3125207265776172647320746f20636c61696d00000000000000000000602082015250565b6000612e69603683612ad1565b9150612e7482612e0d565b604082019050919050565b60006020820190508181036000830152612e9881612e5c565b9050919050565b6000612eaa826128fe565b9150612eb5836128fe565b9250828203905081811115612ecd57612ecc612c06565b5b92915050565b6000604082019050612ee860008301856129c1565b612ef56020830184612908565b9392505050565b600081519050612f0b816129eb565b92915050565b600060208284031215612f2757612f2661286e565b5b6000612f3584828501612efc565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f74602083612ad1565b9150612f7f82612f3e565b602082019050919050565b60006020820190508181036000830152612fa381612f67565b9050919050565b7f5374616b696e6720697320616c7265616479206c697665000000000000000000600082015250565b6000612fe0601783612ad1565b9150612feb82612faa565b602082019050919050565b6000602082019050818103600083015261300f81612fd3565b9050919050565b60008151905061302581612932565b92915050565b6000602082840312156130415761304061286e565b5b600061304f84828501613016565b91505092915050565b600060608201905061306d60008301866129c1565b61307a60208301856129c1565b6130876040830184612908565b949350505050565b7f5374616b696e67206973206e6f74206c697665207965742e0000000000000000600082015250565b60006130c5601883612ad1565b91506130d08261308f565b602082019050919050565b600060208201905081810360008301526130f4816130b8565b9050919050565b7f43616e277420636c61696d206c657373207468616e207a65726f20746f6b656e60008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613157602183612ad1565b9150613162826130fb565b604082019050919050565b600060208201905081810360008301526131868161314a565b9050919050565b7f546f6b656e20486f6c64657273206e65656420746f2062652061626c6520746f60008201527f20676574206261636b2031303025206f662074686520746f6b656e7320616c6c60208201527f6f63617465640000000000000000000000000000000000000000000000000000604082015250565b600061320f604683612ad1565b915061321a8261318d565b606082019050919050565b6000602082019050818103600083015261323e81613202565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b600061327b601083612ad1565b915061328682613245565b602082019050919050565b600060208201905081810360008301526132aa8161326e565b9050919050565b60006132bc826128fe565b91506132c7836128fe565b92508282026132d5816128fe565b915082820484148315176132ec576132eb612c06565b5b5092915050565b7f43616e6e6f7420636c61696d20696e207468652073616d65626c6f636b000000600082015250565b6000613329601d83612ad1565b9150613334826132f3565b602082019050919050565b600060208201905081810360008301526133588161331c565b9050919050565b7f5374616b696e67206973206e6f74206c69766500000000000000000000000000600082015250565b6000613395601383612ad1565b91506133a08261335f565b602082019050919050565b600060208201905081810360008301526133c481613388565b9050919050565b60006133d682612a83565b9050919050565b6133e6816133cb565b82525050565b600060208201905061340160008301846133dd565b92915050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b600061343d601483612ad1565b915061344882613407565b602082019050919050565b6000602082019050818103600083015261346c81613430565b905091905056fea26469706673582212203be057338ce7749017f79cc5de72b6f497f554f44eebc235e045bdc2ad3050fe64736f6c63430008120033

Deployed Bytecode

0x608060405234801561001057600080fd5b50600436106101cf5760003560e01c806384201bd911610104578063b88a802f116100a2578063d826f88f11610071578063d826f88f146104f8578063ef40a67014610502578063f2fde38b14610532578063f7b188a51461054e576101cf565b8063b88a802f14610482578063bca238aa1461048c578063c2412676146104bc578063c33ac9b7146104da576101cf565b80639d8f7706116100de5780639d8f7706146103fc578063a2df2ba714610418578063a694fc3a14610448578063afb838e714610464576101cf565b806384201bd9146103925780638da5cb5b146103ae57806399f853a5146103cc576101cf565b806338700bfe116101715780635c975abb1161014b5780635c975abb1461030a5780636c03932f14610328578063700a4a7414610358578063715018a614610388576101cf565b806338700bfe146102b25780634783c35b146102bc5780634f726a3d146102da576101cf565b80632790eb53116101ad5780632790eb531461022a5780632e1a7d4d1461024857806331d7a26214610264578063341e7dcc14610294576101cf565b8063144fa6d7146101d457806318160ddd146101f05780632138b7c11461020e575b600080fd5b6101ee60048036038101906101e991906128d1565b610558565b005b6101f861064d565b6040516102059190612917565b60405180910390f35b610228600480360381019061022391906128d1565b610653565b005b61023261074a565b60405161023f9190612917565b60405180910390f35b610262600480360381019061025d919061295e565b610750565b005b61027e600480360381019061027991906128d1565b610b68565b60405161028b9190612917565b60405180910390f35b61029c610b7a565b6040516102a991906129a6565b60405180910390f35b6102ba610b8d565b005b6102c4610cba565b6040516102d191906129d0565b60405180910390f35b6102f460048036038101906102ef91906128d1565b610ce4565b60405161030191906129a6565b60405180910390f35b610312610d3a565b60405161031f91906129a6565b60405180910390f35b610342600480360381019061033d91906128d1565b610d50565b60405161034f9190612917565b60405180910390f35b610372600480360381019061036d91906128d1565b610d99565b60405161037f9190612917565b60405180910390f35b610390610de2565b005b6103ac60048036038101906103a7919061295e565b610eae565b005b6103b6611111565b6040516103c391906129d0565b60405180910390f35b6103e660048036038101906103e191906128d1565b61113a565b6040516103f39190612917565b60405180910390f35b61041660048036038101906104119190612a17565b611152565b005b610432600480360381019061042d91906128d1565b61126d565b60405161043f9190612917565b60405180910390f35b610462600480360381019061045d919061295e565b6112b6565b005b61046c6114c8565b6040516104799190612917565b60405180910390f35b61048a6114ce565b005b6104a660048036038101906104a191906128d1565b6117b7565b6040516104b391906129a6565b60405180910390f35b6104c461180d565b6040516104d19190612ab6565b60405180910390f35b6104e2611833565b6040516104ef91906129a6565b60405180910390f35b610500611846565b005b61051c600480360381019061051791906128d1565b611a43565b6040516105299190612917565b60405180910390f35b61054c600480360381019061054791906128d1565b611a8c565b005b610556611bc7565b005b610560611c4d565b73ffffffffffffffffffffffffffffffffffffffff1661057e610cba565b73ffffffffffffffffffffffffffffffffffffffff16146105d4576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105cb90612b54565b60405180910390fd5b600960009054906101000a900460ff16156105ee57600080fd5b80601460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506001600960006101000a81548160ff02191690831515021790555050565b60055481565b61065b611c4d565b73ffffffffffffffffffffffffffffffffffffffff16610679610cba565b73ffffffffffffffffffffffffffffffffffffffff16146106cf576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016106c690612b54565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff160361073e576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161073590612be6565b60405180910390fd5b61074781611c55565b50565b60045481565b610758611d1b565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361079157600080fd5b6202a300600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546107df9190612c35565b421015610821576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161081890612cb5565b60405180910390fd5b60008111610864576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161085b90612d21565b60405180910390fd5b80600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156108e6576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016108dd90612d8d565b60405180910390fd5b6103e8600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546109339190612ddc565b61093c33611d65565b1061097c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161097390612e7f565b60405180910390fd5b610984611e44565b80600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546109d39190612e9f565b9250508190555080600560008282546109ec9190612e9f565b92505081905550601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401610a50929190612ed3565b6020604051808303816000875af1158015610a6f573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190610a939190612f11565b5042600d60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550600080600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541490508015610b2d57610b2c611edc565b5b7fc483bf0af3b237d0e8f42091db468219edf0d51b24995513b57b9857be78715482604051610b5c9190612917565b60405180910390a15050565b6000610b7382611d65565b9050919050565b600660009054906101000a900460ff1681565b610b95611c4d565b73ffffffffffffffffffffffffffffffffffffffff16610bb3611111565b73ffffffffffffffffffffffffffffffffffffffff161480610c0e5750610bd8611c4d565b73ffffffffffffffffffffffffffffffffffffffff16610bf6610cba565b73ffffffffffffffffffffffffffffffffffffffff16145b610c4d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c4490612f8a565b60405180910390fd5b600660009054906101000a900460ff1615610c9d576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610c9490612ff6565b60405180910390fd5b6001600660006101000a81548160ff021916908315150217905550565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6000601160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b60008060009054906101000a900460ff16905090565b6000600c60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6000600a60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b610dea611c4d565b73ffffffffffffffffffffffffffffffffffffffff16610e08611111565b73ffffffffffffffffffffffffffffffffffffffff161480610e635750610e2d611c4d565b73ffffffffffffffffffffffffffffffffffffffff16610e4b610cba565b73ffffffffffffffffffffffffffffffffffffffff16145b610ea2576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610e9990612f8a565b60405180910390fd5b610eac60006120d4565b565b610eb6611c4d565b73ffffffffffffffffffffffffffffffffffffffff16610ed4611111565b73ffffffffffffffffffffffffffffffffffffffff161480610f2f5750610ef9611c4d565b73ffffffffffffffffffffffffffffffffffffffff16610f17610cba565b73ffffffffffffffffffffffffffffffffffffffff16145b610f6e576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f6590612f8a565b60405180910390fd5b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b8152600401610fcb91906129d0565b602060405180830381865afa158015610fe8573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061100c919061302b565b905081811015611051576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161104890612d8d565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b81526004016110b093929190613058565b6020604051808303816000875af11580156110cf573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906110f39190612f11565b5081600360008282546111069190612c35565b925050819055505050565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b60026020528060005260406000206000915090505481565b61115a611c4d565b73ffffffffffffffffffffffffffffffffffffffff16611178611111565b73ffffffffffffffffffffffffffffffffffffffff1614806111d3575061119d611c4d565b73ffffffffffffffffffffffffffffffffffffffff166111bb610cba565b73ffffffffffffffffffffffffffffffffffffffff16145b611212576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161120990612f8a565b60405180910390fd5b80601260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6000601060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b6112be611d1b565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff16036112f757600080fd5b600660009054906101000a900460ff16611346576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161133d906130db565b60405180910390fd5b600060011515601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff161515149050801561143f576103e8600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546113f19190612ddc565b6113fa33611d65565b1061143a576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161143190612e7f565b60405180910390fd5b611440565b5b61144982612199565b42600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055507f1dbb2a223bf10b333097931146bfc57c2b39e7c0615d1b275c61bb2eb417f658826040516114bc9190612917565b60405180910390a15050565b60035481565b6114d6611d1b565b600073ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff160361150f57600080fd5b61151761247d565b61151f612616565b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054116115a1576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016115989061316d565b60405180910390fd5b6000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401611642929190612ed3565b6020604051808303816000875af1158015611661573d6000803e3d6000fd5b505050506040513d601f19601f820116820180604052508101906116859190612f11565b5080600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546116d59190612c35565b9250508190555042601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508060035411611764576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161175b90613225565b60405180910390fd5b80600360008282546117769190612e9f565b925050819055507fbacfa9662d479c707dae707c358323f0c7711ef382007957dc9935e629da36b2816040516117ac9190612917565b60405180910390a150565b6000601260008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff169050919050565b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b600960009054906101000a900460ff1681565b61184e611c4d565b73ffffffffffffffffffffffffffffffffffffffff1661186c610cba565b73ffffffffffffffffffffffffffffffffffffffff16146118c2576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016118b990612b54565b60405180910390fd5b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231306040518263ffffffff1660e01b815260040161191f91906129d0565b602060405180830381865afa15801561193c573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611960919061302b565b90506000811115611a0d57601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b81526004016119c8929190612ed3565b6020604051808303816000875af11580156119e7573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190611a0b9190612f11565b505b600060138190555060006003819055506000600660006101000a81548160ff021916908315150217905550611a4061267f565b50565b6000600f60008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b611a94611c4d565b73ffffffffffffffffffffffffffffffffffffffff16611ab2611111565b73ffffffffffffffffffffffffffffffffffffffff161480611b0d5750611ad7611c4d565b73ffffffffffffffffffffffffffffffffffffffff16611af5610cba565b73ffffffffffffffffffffffffffffffffffffffff16145b611b4c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611b4390612f8a565b60405180910390fd5b600073ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1603611bbb576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611bb290612be6565b60405180910390fd5b611bc4816120d4565b50565b611bcf611c4d565b73ffffffffffffffffffffffffffffffffffffffff16611bed610cba565b73ffffffffffffffffffffffffffffffffffffffff1614611c43576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611c3a90612b54565b60405180910390fd5b611c4b6126e1565b565b600033905090565b6000600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167fd4f90286c853b31e785ae85d08354a790ca9eba6e6eac5152d619cb54766e12060405160405180910390a35050565b611d23610d3a565b15611d63576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611d5a90613291565b60405180910390fd5b565b6000806403308081f5905060006201518082611d819190612ddc565b9050600081600c60008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205442611dd19190612e9f565b611ddb91906132b1565b9050600081600f60008873ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e2a91906132b1565b9050611e368682612743565b905080945050505050919050565b611e4c611d1b565b600454601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054611e999190612c35565b4211611eda576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401611ed19061333f565b60405180910390fd5b565b6000601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055506000600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600a60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000601060003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506000600260003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550565b60008060019054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905081600060016101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508173ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff167f8be0079c531659141344cd1fd0a4f28419497f9722a3daafe3b4186f6b6457e060405160405180910390a35050565b6000601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166370a08231336040518263ffffffff1660e01b81526004016121f691906129d0565b602060405180830381865afa158015612213573d6000803e3d6000fd5b505050506040513d601f19601f82011682018060405250810190612237919061302b565b9050600660009054906101000a900460ff16612288576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161227f906133ab565b60405180910390fd5b818110156122cb576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016122c290612d8d565b60405180910390fd5b601460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330856040518463ffffffff1660e01b815260040161232a93929190613058565b6020604051808303816000875af1158015612349573d6000803e3d6000fd5b505050506040513d601f19601f8201168201806040525081019061236d9190612f11565b5081600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546123bd9190612c35565b9250508190555081600560008282546123d69190612c35565b9250508190555042600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506001601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060006101000a81548160ff0219169083151502179055505050565b6403308081f560138190555060006201518060135461249c9190612ddc565b9050600081600c60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054426124ec9190612e9f565b6124f691906132b1565b905080600f60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205461254391906132b1565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055506125cf33600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054612743565b600b60003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b600060011515601160003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060009054906101000a900460ff1615151490508061267c5761267b611e44565b5b50565b612687611d1b565b60016000806101000a81548160ff0219169083151502179055507f62e78cea01bee320cd4e420270b5ea74000d11b0c9f74754ebdbfc544b05a2586126ca611c4d565b6040516126d791906133ec565b60405180910390a1565b6126e9612825565b60008060006101000a81548160ff0219169083151502179055507f5db9ee0a495bf2e6ff9c91a7834c1ba4fdd244a5e8aa4e537bd38aeae4b073aa61272c611c4d565b60405161273991906133ec565b60405180910390a1565b600080600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054606464174876e800856127999190612ddc565b6127a39190612ddc565b1061281657600a60008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054606464174876e800856127fb9190612ddc565b6128059190612ddc565b61280f9190612e9f565b905061281b565b600090505b8091505092915050565b61282d610d3a565b61286c576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161286390613453565b60405180910390fd5b565b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061289e82612873565b9050919050565b6128ae81612893565b81146128b957600080fd5b50565b6000813590506128cb816128a5565b92915050565b6000602082840312156128e7576128e661286e565b5b60006128f5848285016128bc565b91505092915050565b6000819050919050565b612911816128fe565b82525050565b600060208201905061292c6000830184612908565b92915050565b61293b816128fe565b811461294657600080fd5b50565b60008135905061295881612932565b92915050565b6000602082840312156129745761297361286e565b5b600061298284828501612949565b91505092915050565b60008115159050919050565b6129a08161298b565b82525050565b60006020820190506129bb6000830184612997565b92915050565b6129ca81612893565b82525050565b60006020820190506129e560008301846129c1565b92915050565b6129f48161298b565b81146129ff57600080fd5b50565b600081359050612a11816129eb565b92915050565b60008060408385031215612a2e57612a2d61286e565b5b6000612a3c858286016128bc565b9250506020612a4d85828601612a02565b9150509250929050565b6000819050919050565b6000612a7c612a77612a7284612873565b612a57565b612873565b9050919050565b6000612a8e82612a61565b9050919050565b6000612aa082612a83565b9050919050565b612ab081612a95565b82525050565b6000602082019050612acb6000830184612aa7565b92915050565b600082825260208201905092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206d756c746960008201527f7369670000000000000000000000000000000000000000000000000000000000602082015250565b6000612b3e602383612ad1565b9150612b4982612ae2565b604082019050919050565b60006020820190508181036000830152612b6d81612b31565b9050919050565b7f4f776e61626c653a206e6577206f776e657220697320746865207a65726f206160008201527f6464726573730000000000000000000000000000000000000000000000000000602082015250565b6000612bd0602683612ad1565b9150612bdb82612b74565b604082019050919050565b60006020820190508181036000830152612bff81612bc3565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b6000612c40826128fe565b9150612c4b836128fe565b9250828201905080821115612c6357612c62612c06565b5b92915050565b7f5769746864726177616c206e6f742079657420617661696c61626c6500000000600082015250565b6000612c9f601c83612ad1565b9150612caa82612c69565b602082019050919050565b60006020820190508181036000830152612cce81612c92565b9050919050565b7f416d756e742073686f756c642062652067726561746572207468616e20300000600082015250565b6000612d0b601e83612ad1565b9150612d1682612cd5565b602082019050919050565b60006020820190508181036000830152612d3a81612cfe565b9050919050565b7f4e6f7420656e6f75676820746f6b656e73000000000000000000000000000000600082015250565b6000612d77601183612ad1565b9150612d8282612d41565b602082019050919050565b60006020820190508181036000830152612da681612d6a565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601260045260246000fd5b6000612de7826128fe565b9150612df2836128fe565b925082612e0257612e01612dad565b5b828204905092915050565b7f436c61696d20526577617264732c20796f752068617665206174206c6561737460008201527f20302e3125207265776172647320746f20636c61696d00000000000000000000602082015250565b6000612e69603683612ad1565b9150612e7482612e0d565b604082019050919050565b60006020820190508181036000830152612e9881612e5c565b9050919050565b6000612eaa826128fe565b9150612eb5836128fe565b9250828203905081811115612ecd57612ecc612c06565b5b92915050565b6000604082019050612ee860008301856129c1565b612ef56020830184612908565b9392505050565b600081519050612f0b816129eb565b92915050565b600060208284031215612f2757612f2661286e565b5b6000612f3584828501612efc565b91505092915050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b6000612f74602083612ad1565b9150612f7f82612f3e565b602082019050919050565b60006020820190508181036000830152612fa381612f67565b9050919050565b7f5374616b696e6720697320616c7265616479206c697665000000000000000000600082015250565b6000612fe0601783612ad1565b9150612feb82612faa565b602082019050919050565b6000602082019050818103600083015261300f81612fd3565b9050919050565b60008151905061302581612932565b92915050565b6000602082840312156130415761304061286e565b5b600061304f84828501613016565b91505092915050565b600060608201905061306d60008301866129c1565b61307a60208301856129c1565b6130876040830184612908565b949350505050565b7f5374616b696e67206973206e6f74206c697665207965742e0000000000000000600082015250565b60006130c5601883612ad1565b91506130d08261308f565b602082019050919050565b600060208201905081810360008301526130f4816130b8565b9050919050565b7f43616e277420636c61696d206c657373207468616e207a65726f20746f6b656e60008201527f7300000000000000000000000000000000000000000000000000000000000000602082015250565b6000613157602183612ad1565b9150613162826130fb565b604082019050919050565b600060208201905081810360008301526131868161314a565b9050919050565b7f546f6b656e20486f6c64657273206e65656420746f2062652061626c6520746f60008201527f20676574206261636b2031303025206f662074686520746f6b656e7320616c6c60208201527f6f63617465640000000000000000000000000000000000000000000000000000604082015250565b600061320f604683612ad1565b915061321a8261318d565b606082019050919050565b6000602082019050818103600083015261323e81613202565b9050919050565b7f5061757361626c653a2070617573656400000000000000000000000000000000600082015250565b600061327b601083612ad1565b915061328682613245565b602082019050919050565b600060208201905081810360008301526132aa8161326e565b9050919050565b60006132bc826128fe565b91506132c7836128fe565b92508282026132d5816128fe565b915082820484148315176132ec576132eb612c06565b5b5092915050565b7f43616e6e6f7420636c61696d20696e207468652073616d65626c6f636b000000600082015250565b6000613329601d83612ad1565b9150613334826132f3565b602082019050919050565b600060208201905081810360008301526133588161331c565b9050919050565b7f5374616b696e67206973206e6f74206c69766500000000000000000000000000600082015250565b6000613395601383612ad1565b91506133a08261335f565b602082019050919050565b600060208201905081810360008301526133c481613388565b9050919050565b60006133d682612a83565b9050919050565b6133e6816133cb565b82525050565b600060208201905061340160008301846133dd565b92915050565b7f5061757361626c653a206e6f7420706175736564000000000000000000000000600082015250565b600061343d601483612ad1565b915061344882613407565b602082019050919050565b6000602082019050818103600083015261346c81613430565b905091905056fea26469706673582212203be057338ce7749017f79cc5de72b6f497f554f44eebc235e045bdc2ad3050fe64736f6c63430008120033

Deployed Bytecode Sourcemap

3876:8435:0:-:0;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;5101:162;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4244:26;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2558:212;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4206:31;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7948:869;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;12193:111;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4307:33;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5846:144;;;:::i;:::-;;1759:93;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;11251:116;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;767:86;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10878:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;10751:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2256:94;;;:::i;:::-;;5482:356;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;1860:87;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4058:48;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5355:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;11000:121;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;7242:549;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;4113:39;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;9949:667;;;:::i;:::-;;11129:114;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;5073:19;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;4411:30;;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;6341:331;;;:::i;:::-;;10624:119;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;;;;;;:::i;:::-;;;;;;;;2358:192;;;;;;;;;;;;;:::i;:::-;;:::i;:::-;;5271:76;;;:::i;:::-;;5101:162;2176:12;:10;:12::i;:::-;2162:26;;:10;:8;:10::i;:::-;:26;;;2154:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5183:10:::1;;;;;;;;;;;5182:11;5174:20;;;::::0;::::1;;5220:6;5205:5;;:22;;;;;;;;;;;;;;;;;;5251:4;5238:10;;:17;;;;;;;;;;;;;;;;;;5101:162:::0;:::o;4244:26::-;;;;:::o;2558:212::-;2176:12;:10;:12::i;:::-;2162:26;;:10;:8;:10::i;:::-;:26;;;2154:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;2681:1:::1;2658:25;;:11;:25;;::::0;2650:76:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2737:25;2750:11;2737:12;:25::i;:::-;2558:212:::0;:::o;4206:31::-;;;;:::o;7948:869::-;643:19;:17;:19::i;:::-;8046:1:::1;8024:24;;:10;:24;;::::0;8016:33:::1;;;::::0;::::1;;8117:6;8087:15;:27;8103:10;8087:27;;;;;;;;;;;;;;;;:36;;;;:::i;:::-;8068:15;:55;;8060:96;;;;;;;;;;;;:::i;:::-;;;;;;;;;8184:1;8175:6;:10;8167:53;;;;;;;;;;;;:::i;:::-;;;;;;;;;8270:6;8239:15;:27;8255:10;8239:27;;;;;;;;;;;;;;;;:37;;8231:66;;;;;;;;;;;;:::i;:::-;;;;;;;;;8361:4;8331:15;:27;8347:10;8331:27;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;8311:16;8316:10;8311:4;:16::i;:::-;:54;8308:128;;8369:64;;;;;;;;;;:::i;:::-;;;;;;;;8308:128;8446:6;:4;:6::i;:::-;8500;8469:15;:27;8485:10;8469:27;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;8537:6;8522:11;;:21;;;;;;;:::i;:::-;;;;;;;;8558:5;;;;;;;;;;;:14;;;8573:10;8585:6;8558:34;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;8636:15;8607:14;:26;8622:10;8607:26;;;;;;;;;;;;;;;:44;;;;8662:16;8712:1:::0;8681:15:::1;:27;8697:10;8681:27;;;;;;;;;;;;;;;;:32;8662:51;;8727:11;8724:41;;;8751:11;:9;:11::i;:::-;8724:41;8782:27;8802:6;8782:27;;;;;;:::i;:::-;;;;;;;;8005:812;7948:869:::0;:::o;12193:111::-;12256:7;12283:13;12288:7;12283:4;:13::i;:::-;12276:20;;12193:111;;;:::o;4307:33::-;;;;;;;;;;;;;:::o;5846:144::-;2006:12;:10;:12::i;:::-;1995:23;;:7;:5;:7::i;:::-;:23;;;:53;;;;2036:12;:10;:12::i;:::-;2022:26;;:10;:8;:10::i;:::-;:26;;;1995:53;1987:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;5911:13:::1;;;;;;;;;;;5910:14;5902:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;5978:4;5962:13;;:20;;;;;;;;;;;;;;;;;;5846:144::o:0;1759:93::-;1808:7;1835:9;;;;;;;;;;;1828:16;;1759:93;:::o;11251:116::-;11314:4;11338:13;:21;11352:6;11338:21;;;;;;;;;;;;;;;;;;;;;;;;;11331:28;;11251:116;;;:::o;767:86::-;814:4;838:7;;;;;;;;;;;831:14;;767:86;:::o;10878:114::-;10938:7;10965:11;:19;10977:6;10965:19;;;;;;;;;;;;;;;;10958:26;;10878:114;;;:::o;10751:119::-;10811:7;10838:16;:24;10855:6;10838:24;;;;;;;;;;;;;;;;10831:31;;10751:119;;;:::o;2256:94::-;2006:12;:10;:12::i;:::-;1995:23;;:7;:5;:7::i;:::-;:23;;;:53;;;;2036:12;:10;:12::i;:::-;2022:26;;:10;:8;:10::i;:::-;:26;;;1995:53;1987:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;2321:21:::1;2339:1;2321:9;:21::i;:::-;2256:94::o:0;5482:356::-;2006:12;:10;:12::i;:::-;1995:23;;:7;:5;:7::i;:::-;:23;;;:53;;;;2036:12;:10;:12::i;:::-;2022:26;;:10;:8;:10::i;:::-;:26;;;1995:53;1987:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;5565:19:::1;5587:5;;;;;;;;;;;:15;;;5603:10;5587:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;5565:49;;5652:6;5637:11;:21;;5629:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;5694:5;;;;;;;;;;;:18;;;5713:10;5733:4;5740:6;5694:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;5824:6;5796:24;;:34;;;;;;;:::i;:::-;;;;;;;;5554:284;5482:356:::0;:::o;1860:87::-;1906:7;1933:6;;;;;;;;;;;1926:13;;1860:87;:::o;4058:48::-;;;;;;;;;;;;;;;;;:::o;5355:119::-;2006:12;:10;:12::i;:::-;1995:23;;:7;:5;:7::i;:::-;:23;;;:53;;;;2036:12;:10;:12::i;:::-;2022:26;;:10;:8;:10::i;:::-;:26;;;1995:53;1987:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;5461:5:::1;5438:12;:20;5451:6;5438:20;;;;;;;;;;;;;;;;:28;;;;;;;;;;;;;;;;;;5355:119:::0;;:::o;11000:121::-;11062:7;11089:16;:24;11106:6;11089:24;;;;;;;;;;;;;;;;11082:31;;11000:121;;;:::o;7242:549::-;643:19;:17;:19::i;:::-;7337:1:::1;7315:24;;:10;:24;;::::0;7307:33:::1;;;::::0;::::1;;7359:13;;;;;;;;;;;7351:49;;;;;;;;;;;;:::i;:::-;;;;;;;;;7413:16;7461:4;7432:33;;:13;:25;7446:10;7432:25;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;7413:52;;7479:11;7476:188;;;7560:4;7530:15;:27;7546:10;7530:27;;;;;;;;;;;;;;;;:34;;;;:::i;:::-;7510:16;7515:10;7510:4;:16::i;:::-;:54;7507:128;;7568:64;;;;;;;;;;:::i;:::-;;;;;;;;7507:128;7476:188;;;;7676:20;7689:6;7676:12;:20::i;:::-;7737:15;7707;:27;7723:10;7707:27;;;;;;;;;;;;;;;:45;;;;7766:15;7774:6;7766:15;;;;;;:::i;:::-;;;;;;;;7296:495;7242:549:::0;:::o;4113:39::-;;;;:::o;9949:667::-;643:19;:17;:19::i;:::-;10034:1:::1;10012:24;;:10;:24;;::::0;10004:33:::1;;;::::0;::::1;;10048:18;:16;:18::i;:::-;10077:8;:6;:8::i;:::-;10128:1;10106:7;:19;10114:10;10106:19;;;;;;;;;;;;;;;;:23;10098:69;;;;;;;;;;;;:::i;:::-;;;;;;;;;10180:19;10202:7;:19;10210:10;10202:19;;;;;;;;;;;;;;;;10180:41;;10234:5;;;;;;;;;;;:14;;;10249:10;10261:11;10234:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;10316:11;10284:16;:28;10301:10;10284:28;;;;;;;;;;;;;;;;:43;;;;;;;:::i;:::-;;;;;;;;10369:15;10338:16;:28;10355:10;10338:28;;;;;;;;;;;;;;;:46;;;;10430:11;10403:24;;:38;10395:120;;;;;;;;;;;;:::i;:::-;;;;;;;;;10554:11;10526:24;;:39;;;;;;;:::i;:::-;;;;;;;;10583:25;10596:11;10583:25;;;;;;:::i;:::-;;;;;;;;9993:623;9949:667::o:0;11129:114::-;11191:4;11215:12;:20;11228:6;11215:20;;;;;;;;;;;;;;;;;;;;;;;;;11208:27;;11129:114;;;:::o;5073:19::-;;;;;;;;;;;;;:::o;4411:30::-;;;;;;;;;;;;;:::o;6341:331::-;2176:12;:10;:12::i;:::-;2162:26;;:10;:8;:10::i;:::-;:26;;;2154:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;6397:19:::1;6419:5;;;;;;;;;;;:15;;;6443:4;6419:30;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6397:52;;6477:1;6463:11;:15;6460:86;;;6495:5;;;;;;;;;;;:14;;;6510:10;6522:11;6495:39;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;::::0;::::1;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;6460:86;6573:1;6556:14;:18;;;;6612:1;6585:24;:28;;;;6640:5;6624:13;;:21;;;;;;;;;;;;;;;;;;6656:8;:6;:8::i;:::-;6386:286;6341:331::o:0;10624:119::-;10685:7;10712:15;:23;10728:6;10712:23;;;;;;;;;;;;;;;;10705:30;;10624:119;;;:::o;2358:192::-;2006:12;:10;:12::i;:::-;1995:23;;:7;:5;:7::i;:::-;:23;;;:53;;;;2036:12;:10;:12::i;:::-;2022:26;;:10;:8;:10::i;:::-;:26;;;1995:53;1987:98;;;;;;;;;;;;:::i;:::-;;;;;;;;;2467:1:::1;2447:22;;:8;:22;;::::0;2439:73:::1;;;;;;;;;;;;:::i;:::-;;;;;;;;;2523:19;2533:8;2523:9;:19::i;:::-;2358:192:::0;:::o;5271:76::-;2176:12;:10;:12::i;:::-;2162:26;;:10;:8;:10::i;:::-;:26;;;2154:74;;;;;;;;;;;;:::i;:::-;;;;;;;;;5329:10:::1;:8;:10::i;:::-;5271:76::o:0;145:107::-;190:15;233:10;218:26;;145:107;:::o;2959:196::-;3021:19;3043:9;;;;;;;;;;;3021:31;;3075:11;3063:9;;:23;;;;;;;;;;;;;;;;;;3135:11;3102:45;;3122:11;3102:45;;;;;;;;;;;;3010:145;2959:196;:::o;861:108::-;932:8;:6;:8::i;:::-;931:9;923:38;;;;;;;;;;;;:::i;:::-;;;;;;;;;861:108::o;11375:455::-;11428:7;11448:25;11476:11;11448:39;;11489:25;11537:5;11517:17;:25;;;;:::i;:::-;11489:53;;11544:16;11625:17;11601:11;:20;11613:7;11601:20;;;;;;;;;;;;;;;;11583:15;:38;;;;:::i;:::-;11582:60;;;;:::i;:::-;11544:98;;11653:18;11723:8;11696:15;:24;11712:7;11696:24;;;;;;;;;;;;;;;;:35;;;;:::i;:::-;11682:50;;11756:34;11770:7;11779:10;11756:13;:34::i;:::-;11743:47;;11812:10;11805:17;;;;;;11375:455;;;:::o;9586:164::-;643:19;:17;:19::i;:::-;9697:11:::1;;9666:16;:28;9683:10;9666:28;;;;;;;;;;;;;;;;:42;;;;:::i;:::-;9648:15;:60;9640:102;;;;;;;;;;;;:::i;:::-;;;;;;;;;9586:164::o:0;8829:351::-;8901:5;8873:13;:25;8887:10;8873:25;;;;;;;;;;;;;;;;:33;;;;;;;;;;;;;;;;;;8943:1;8921:7;:19;8929:10;8921:19;;;;;;;;;;;;;;;:23;;;;8990:1;8959:16;:28;8976:10;8959:28;;;;;;;;;;;;;;;:32;;;;9037:1;9006:16;:28;9023:10;9006:28;;;;;;;;;;;;;;;:32;;;;9079:1;9053:11;:23;9065:10;9053:23;;;;;;;;;;;;;;;:27;;;;9125:1;9095:15;:27;9111:10;9095:27;;;;;;;;;;;;;;;:31;;;;9171:1;9141:15;:27;9157:10;9141:27;;;;;;;;;;;;;;;:31;;;;8829:351::o;2778:173::-;2834:16;2853:6;;;;;;;;;;;2834:25;;2879:8;2870:6;;:17;;;;;;;;;;;;;;;;;;2934:8;2903:40;;2924:8;2903:40;;;;;;;;;;;;2823:128;2778:173;:::o;6680:554::-;6737:19;6759:5;;;;;;;;;;;:15;;;6775:10;6759:27;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;6737:49;;6805:13;;;;;;;;;;;6797:44;;;;;;;;;;;;:::i;:::-;;;;;;;;;6875:6;6860:11;:21;;6852:50;;;;;;;;;;;;:::i;:::-;;;;;;;;;6913:5;;;;;;;;;;;:18;;;6932:10;6952:4;6959:6;6913:53;;;;;;;;;;;;;;;;;:::i;:::-;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;:::i;:::-;;7008:6;6977:15;:27;6993:10;6977:27;;;;;;;;;;;;;;;;:37;;;;;;;:::i;:::-;;;;;;;;7040:6;7025:11;;:21;;;;;;;:::i;:::-;;;;;;;;7083:15;7057:11;:23;7069:10;7057:23;;;;;;;;;;;;;;;:41;;;;7222:4;7194:13;:25;7208:10;7194:25;;;;;;;;;;;;;;;;:32;;;;;;;;;;;;;;;;;;6726:508;6680:554;:::o;9194:380::-;9258:11;9241:14;:28;;;;9271:25;9316:5;9299:14;;:22;;;;:::i;:::-;9271:50;;9323:16;9397:17;9370:11;:23;9382:10;9370:23;;;;;;;;;;;;;;;;9352:15;:41;;;;:::i;:::-;9351:63;;;;:::i;:::-;9323:91;;9478:8;9448:15;:27;9464:10;9448:27;;;;;;;;;;;;;;;;:38;;;;:::i;:::-;9425:7;:19;9433:10;9425:19;;;;;;;;;;;;;;;:62;;;;9520:46;9534:10;9546:7;:19;9554:10;9546:19;;;;;;;;;;;;;;;;9520:13;:46::i;:::-;9498:7;:19;9506:10;9498:19;;;;;;;;;;;;;;;:68;;;;9230:344;;9194:380::o;9758:183::-;9802:16;9850:4;9821:33;;:13;:25;9835:10;9821:25;;;;;;;;;;;;;;;;;;;;;;;;;:33;;;9802:52;;9868:11;9865:67;;9914:6;:4;:6::i;:::-;9865:67;9789:152;9758:183::o;1093:118::-;643:19;:17;:19::i;:::-;1163:4:::1;1153:7;::::0;:14:::1;;;;;;;;;;;;;;;;;;1183:20;1190:12;:10;:12::i;:::-;1183:20;;;;;;:::i;:::-;;;;;;;;1093:118::o:0;1219:120::-;723:16;:14;:16::i;:::-;1288:5:::1;1278:7:::0;::::1;:15;;;;;;;;;;;;;;;;;;1309:22;1318:12;:10;:12::i;:::-;1309:22;;;;;;:::i;:::-;;;;;;;;1219:120::o:0;11838:346::-;11911:7;11931:15;11990:16;:25;12007:7;11990:25;;;;;;;;;;;;;;;;11983:3;11966:12;11962:1;:16;;;;:::i;:::-;11960:26;;;;:::i;:::-;:55;11957:195;;12071:16;:25;12088:7;12071:25;;;;;;;;;;;;;;;;12065:3;12048:12;12044:1;:16;;;;:::i;:::-;12042:26;;;;:::i;:::-;:54;;;;:::i;:::-;12032:64;;11957:195;;;12139:1;12129:11;;11957:195;12169:7;12162:14;;;11838:346;;;;:::o;977:108::-;1044:8;:6;:8::i;:::-;1036:41;;;;;;;;;;;;:::i;:::-;;;;;;;;;977: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:116::-;3068:21;3083:5;3068:21;:::i;:::-;3061:5;3058:32;3048:60;;3104:1;3101;3094:12;3048:60;2998:116;:::o;3120:133::-;3163:5;3201:6;3188:20;3179:29;;3217:30;3241:5;3217:30;:::i;:::-;3120:133;;;;:::o;3259:468::-;3324:6;3332;3381:2;3369:9;3360:7;3356:23;3352:32;3349:119;;;3387:79;;:::i;:::-;3349:119;3507:1;3532:53;3577:7;3568:6;3557:9;3553:22;3532:53;:::i;:::-;3522:63;;3478:117;3634:2;3660:50;3702:7;3693:6;3682:9;3678:22;3660:50;:::i;:::-;3650:60;;3605:115;3259:468;;;;;:::o;3733:60::-;3761:3;3782:5;3775:12;;3733:60;;;:::o;3799:142::-;3849:9;3882:53;3900:34;3909:24;3927:5;3909:24;:::i;:::-;3900:34;:::i;:::-;3882:53;:::i;:::-;3869:66;;3799:142;;;:::o;3947:126::-;3997:9;4030:37;4061:5;4030:37;:::i;:::-;4017:50;;3947:126;;;:::o;4079:140::-;4143:9;4176:37;4207:5;4176:37;:::i;:::-;4163:50;;4079:140;;;:::o;4225:159::-;4326:51;4371:5;4326:51;:::i;:::-;4321:3;4314:64;4225:159;;:::o;4390:250::-;4497:4;4535:2;4524:9;4520:18;4512:26;;4548:85;4630:1;4619:9;4615:17;4606:6;4548:85;:::i;:::-;4390:250;;;;:::o;4646:169::-;4730:11;4764:6;4759:3;4752:19;4804:4;4799:3;4795:14;4780:29;;4646:169;;;;:::o;4821:222::-;4961:34;4957:1;4949:6;4945:14;4938:58;5030:5;5025:2;5017:6;5013:15;5006:30;4821:222;:::o;5049:366::-;5191:3;5212:67;5276:2;5271:3;5212:67;:::i;:::-;5205:74;;5288:93;5377:3;5288:93;:::i;:::-;5406:2;5401:3;5397:12;5390:19;;5049:366;;;:::o;5421:419::-;5587:4;5625:2;5614:9;5610:18;5602:26;;5674:9;5668:4;5664:20;5660:1;5649:9;5645:17;5638:47;5702:131;5828:4;5702:131;:::i;:::-;5694:139;;5421:419;;;:::o;5846:225::-;5986:34;5982:1;5974:6;5970:14;5963:58;6055:8;6050:2;6042:6;6038:15;6031:33;5846:225;:::o;6077:366::-;6219:3;6240:67;6304:2;6299:3;6240:67;:::i;:::-;6233:74;;6316:93;6405:3;6316:93;:::i;:::-;6434:2;6429:3;6425:12;6418:19;;6077:366;;;:::o;6449:419::-;6615:4;6653:2;6642:9;6638:18;6630:26;;6702:9;6696:4;6692:20;6688:1;6677:9;6673:17;6666:47;6730:131;6856:4;6730:131;:::i;:::-;6722:139;;6449:419;;;:::o;6874:180::-;6922:77;6919:1;6912:88;7019:4;7016:1;7009:15;7043:4;7040:1;7033:15;7060:191;7100:3;7119:20;7137:1;7119:20;:::i;:::-;7114:25;;7153:20;7171:1;7153:20;:::i;:::-;7148:25;;7196:1;7193;7189:9;7182:16;;7217:3;7214:1;7211:10;7208:36;;;7224:18;;:::i;:::-;7208:36;7060:191;;;;:::o;7257:178::-;7397:30;7393:1;7385:6;7381:14;7374:54;7257:178;:::o;7441:366::-;7583:3;7604:67;7668:2;7663:3;7604:67;:::i;:::-;7597:74;;7680:93;7769:3;7680:93;:::i;:::-;7798:2;7793:3;7789:12;7782:19;;7441:366;;;:::o;7813:419::-;7979:4;8017:2;8006:9;8002:18;7994:26;;8066:9;8060:4;8056:20;8052:1;8041:9;8037:17;8030:47;8094:131;8220:4;8094:131;:::i;:::-;8086:139;;7813:419;;;:::o;8238:180::-;8378:32;8374:1;8366:6;8362:14;8355:56;8238:180;:::o;8424:366::-;8566:3;8587:67;8651:2;8646:3;8587:67;:::i;:::-;8580:74;;8663:93;8752:3;8663:93;:::i;:::-;8781:2;8776:3;8772:12;8765:19;;8424:366;;;:::o;8796:419::-;8962:4;9000:2;8989:9;8985:18;8977:26;;9049:9;9043:4;9039:20;9035:1;9024:9;9020:17;9013:47;9077:131;9203:4;9077:131;:::i;:::-;9069:139;;8796:419;;;:::o;9221:167::-;9361:19;9357:1;9349:6;9345:14;9338:43;9221:167;:::o;9394:366::-;9536:3;9557:67;9621:2;9616:3;9557:67;:::i;:::-;9550:74;;9633:93;9722:3;9633:93;:::i;:::-;9751:2;9746:3;9742:12;9735:19;;9394:366;;;:::o;9766:419::-;9932:4;9970:2;9959:9;9955:18;9947:26;;10019:9;10013:4;10009:20;10005:1;9994:9;9990:17;9983:47;10047:131;10173:4;10047:131;:::i;:::-;10039:139;;9766:419;;;:::o;10191:180::-;10239:77;10236:1;10229:88;10336:4;10333:1;10326:15;10360:4;10357:1;10350:15;10377:185;10417:1;10434:20;10452:1;10434:20;:::i;:::-;10429:25;;10468:20;10486:1;10468:20;:::i;:::-;10463:25;;10507:1;10497:35;;10512:18;;:::i;:::-;10497:35;10554:1;10551;10547:9;10542:14;;10377:185;;;;:::o;10568:241::-;10708:34;10704:1;10696:6;10692:14;10685:58;10777:24;10772:2;10764:6;10760:15;10753:49;10568:241;:::o;10815:366::-;10957:3;10978:67;11042:2;11037:3;10978:67;:::i;:::-;10971:74;;11054:93;11143:3;11054:93;:::i;:::-;11172:2;11167:3;11163:12;11156:19;;10815:366;;;:::o;11187:419::-;11353:4;11391:2;11380:9;11376:18;11368:26;;11440:9;11434:4;11430:20;11426:1;11415:9;11411:17;11404:47;11468:131;11594:4;11468:131;:::i;:::-;11460:139;;11187:419;;;:::o;11612:194::-;11652:4;11672:20;11690:1;11672:20;:::i;:::-;11667:25;;11706:20;11724:1;11706:20;:::i;:::-;11701:25;;11750:1;11747;11743:9;11735:17;;11774:1;11768:4;11765:11;11762:37;;;11779:18;;:::i;:::-;11762:37;11612:194;;;;:::o;11812:332::-;11933:4;11971:2;11960:9;11956:18;11948:26;;11984:71;12052:1;12041:9;12037:17;12028:6;11984:71;:::i;:::-;12065:72;12133:2;12122:9;12118:18;12109:6;12065:72;:::i;:::-;11812:332;;;;;:::o;12150:137::-;12204:5;12235:6;12229:13;12220:22;;12251:30;12275:5;12251:30;:::i;:::-;12150:137;;;;:::o;12293:345::-;12360:6;12409:2;12397:9;12388:7;12384:23;12380:32;12377:119;;;12415:79;;:::i;:::-;12377:119;12535:1;12560:61;12613:7;12604:6;12593:9;12589:22;12560:61;:::i;:::-;12550:71;;12506:125;12293:345;;;;:::o;12644:182::-;12784:34;12780:1;12772:6;12768:14;12761:58;12644:182;:::o;12832:366::-;12974:3;12995:67;13059:2;13054:3;12995:67;:::i;:::-;12988:74;;13071:93;13160:3;13071:93;:::i;:::-;13189:2;13184:3;13180:12;13173:19;;12832:366;;;:::o;13204:419::-;13370:4;13408:2;13397:9;13393:18;13385:26;;13457:9;13451:4;13447:20;13443:1;13432:9;13428:17;13421:47;13485:131;13611:4;13485:131;:::i;:::-;13477:139;;13204:419;;;:::o;13629:173::-;13769:25;13765:1;13757:6;13753:14;13746:49;13629:173;:::o;13808:366::-;13950:3;13971:67;14035:2;14030:3;13971:67;:::i;:::-;13964:74;;14047:93;14136:3;14047:93;:::i;:::-;14165:2;14160:3;14156:12;14149:19;;13808:366;;;:::o;14180:419::-;14346:4;14384:2;14373:9;14369:18;14361:26;;14433:9;14427:4;14423:20;14419:1;14408:9;14404:17;14397:47;14461:131;14587:4;14461:131;:::i;:::-;14453:139;;14180:419;;;:::o;14605:143::-;14662:5;14693:6;14687:13;14678:22;;14709:33;14736:5;14709:33;:::i;:::-;14605:143;;;;:::o;14754:351::-;14824:6;14873:2;14861:9;14852:7;14848:23;14844:32;14841:119;;;14879:79;;:::i;:::-;14841:119;14999:1;15024:64;15080:7;15071:6;15060:9;15056:22;15024:64;:::i;:::-;15014:74;;14970:128;14754:351;;;;:::o;15111:442::-;15260:4;15298:2;15287:9;15283:18;15275:26;;15311:71;15379:1;15368:9;15364:17;15355:6;15311:71;:::i;:::-;15392:72;15460:2;15449:9;15445:18;15436:6;15392:72;:::i;:::-;15474;15542:2;15531:9;15527:18;15518:6;15474:72;:::i;:::-;15111:442;;;;;;:::o;15559:174::-;15699:26;15695:1;15687:6;15683:14;15676:50;15559:174;:::o;15739:366::-;15881:3;15902:67;15966:2;15961:3;15902:67;:::i;:::-;15895:74;;15978:93;16067:3;15978:93;:::i;:::-;16096:2;16091:3;16087:12;16080:19;;15739:366;;;:::o;16111:419::-;16277:4;16315:2;16304:9;16300:18;16292:26;;16364:9;16358:4;16354:20;16350:1;16339:9;16335:17;16328:47;16392:131;16518:4;16392:131;:::i;:::-;16384:139;;16111:419;;;:::o;16536:220::-;16676:34;16672:1;16664:6;16660:14;16653:58;16745:3;16740:2;16732:6;16728:15;16721:28;16536:220;:::o;16762:366::-;16904:3;16925:67;16989:2;16984:3;16925:67;:::i;:::-;16918:74;;17001:93;17090:3;17001:93;:::i;:::-;17119:2;17114:3;17110:12;17103:19;;16762:366;;;:::o;17134:419::-;17300:4;17338:2;17327:9;17323:18;17315:26;;17387:9;17381:4;17377:20;17373:1;17362:9;17358:17;17351:47;17415:131;17541:4;17415:131;:::i;:::-;17407:139;;17134:419;;;:::o;17559:294::-;17699:34;17695:1;17687:6;17683:14;17676:58;17768:34;17763:2;17755:6;17751:15;17744:59;17837:8;17832:2;17824:6;17820:15;17813:33;17559:294;:::o;17859:366::-;18001:3;18022:67;18086:2;18081:3;18022:67;:::i;:::-;18015:74;;18098:93;18187:3;18098:93;:::i;:::-;18216:2;18211:3;18207:12;18200:19;;17859:366;;;:::o;18231:419::-;18397:4;18435:2;18424:9;18420:18;18412:26;;18484:9;18478:4;18474:20;18470:1;18459:9;18455:17;18448:47;18512:131;18638:4;18512:131;:::i;:::-;18504:139;;18231:419;;;:::o;18656:166::-;18796:18;18792:1;18784:6;18780:14;18773:42;18656:166;:::o;18828:366::-;18970:3;18991:67;19055:2;19050:3;18991:67;:::i;:::-;18984:74;;19067:93;19156:3;19067:93;:::i;:::-;19185:2;19180:3;19176:12;19169:19;;18828:366;;;:::o;19200:419::-;19366:4;19404:2;19393:9;19389:18;19381:26;;19453:9;19447:4;19443:20;19439:1;19428:9;19424:17;19417:47;19481:131;19607:4;19481:131;:::i;:::-;19473:139;;19200:419;;;:::o;19625:410::-;19665:7;19688:20;19706:1;19688:20;:::i;:::-;19683:25;;19722:20;19740:1;19722:20;:::i;:::-;19717:25;;19777:1;19774;19770:9;19799:30;19817:11;19799:30;:::i;:::-;19788:41;;19978:1;19969:7;19965:15;19962:1;19959:22;19939:1;19932:9;19912:83;19889:139;;20008:18;;:::i;:::-;19889:139;19673:362;19625:410;;;;:::o;20041:179::-;20181:31;20177:1;20169:6;20165:14;20158:55;20041:179;:::o;20226:366::-;20368:3;20389:67;20453:2;20448:3;20389:67;:::i;:::-;20382:74;;20465:93;20554:3;20465:93;:::i;:::-;20583:2;20578:3;20574:12;20567:19;;20226:366;;;:::o;20598:419::-;20764:4;20802:2;20791:9;20787:18;20779:26;;20851:9;20845:4;20841:20;20837:1;20826:9;20822:17;20815:47;20879:131;21005:4;20879:131;:::i;:::-;20871:139;;20598:419;;;:::o;21023:169::-;21163:21;21159:1;21151:6;21147:14;21140:45;21023:169;:::o;21198:366::-;21340:3;21361:67;21425:2;21420:3;21361:67;:::i;:::-;21354:74;;21437:93;21526:3;21437:93;:::i;:::-;21555:2;21550:3;21546:12;21539:19;;21198:366;;;:::o;21570:419::-;21736:4;21774:2;21763:9;21759:18;21751:26;;21823:9;21817:4;21813:20;21809:1;21798:9;21794:17;21787:47;21851:131;21977:4;21851:131;:::i;:::-;21843:139;;21570:419;;;:::o;21995:134::-;22053:9;22086:37;22117:5;22086:37;:::i;:::-;22073:50;;21995:134;;;:::o;22135:147::-;22230:45;22269:5;22230:45;:::i;:::-;22225:3;22218:58;22135:147;;:::o;22288:238::-;22389:4;22427:2;22416:9;22412:18;22404:26;;22440:79;22516:1;22505:9;22501:17;22492:6;22440:79;:::i;:::-;22288:238;;;;:::o;22532:170::-;22672:22;22668:1;22660:6;22656:14;22649:46;22532:170;:::o;22708:366::-;22850:3;22871:67;22935:2;22930:3;22871:67;:::i;:::-;22864:74;;22947:93;23036:3;22947:93;:::i;:::-;23065:2;23060:3;23056:12;23049:19;;22708:366;;;:::o;23080:419::-;23246:4;23284:2;23273:9;23269:18;23261:26;;23333:9;23327:4;23323:20;23319:1;23308:9;23304:17;23297:47;23361:131;23487:4;23361:131;:::i;:::-;23353:139;;23080:419;;;:::o

Swarm Source

ipfs://3be057338ce7749017f79cc5de72b6f497f554f44eebc235e045bdc2ad3050fe

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.