false
true
0

Contract Address Details

0x01A5C05a3131c30623D944cFb1213e1a34eCebA9

Contract Name
hodlRich
Creator
0x83433a–670f50 at 0xba89c2–eb49c9
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
Fetching transactions...
Transfers
Fetching transfers...
Gas Used
Fetching gas used...
Last Balance Update
27874919
Warning! Contract bytecode has been changed and doesn't match the verified one. Therefore, interaction with this smart contract may be risky.
This contract has been partially verified via Sourcify. View contract in Sourcify repository
Contract name:
hodlRich




Optimization enabled
false
Compiler version
v0.5.14+commit.01f1aaa4




EVM Version
istanbul




Verified at
2026-04-22T07:39:51.828340Z

Constructor Arguments

0000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000012c00000000000000000000000083433a1c604ca804e5f945a2dd21973d21670f50

Arg [0] (uint256) : 20
Arg [1] (uint256) : 300
Arg [2] (address) : 0x83433a1c604ca804e5f945a2dd21973d21670f50

              

hodlRich.sol

pragma solidity ^0.5.14;

library SafeMath {

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

        return c;
    }

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

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

        return c;
    }

    function mul(uint256 a, uint256 b) internal pure returns (uint256) {
        // Gas optimization: this is cheaper than requiring 'a' not being zero, but the
        // benefit is lost if 'b' is also tested.
        // See: https://github.com/OpenZeppelin/openzeppelin-contracts/pull/522
        if (a == 0) {
            return 0;
        }

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

        return c;
    }

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

    function div(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        // Solidity only automatically asserts when dividing by 0
        require(b > 0, errorMessage);
        uint256 c = a / b;
        // assert(a == b * c + a % b); // There is no case in which this doesn't hold

        return c;
    }

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

    function mod(uint256 a, uint256 b, string memory errorMessage) internal pure returns (uint256) {
        require(b != 0, errorMessage);
        return a % b;
    }
}

interface ERC20Token {
    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 hodlRich {
    
    using SafeMath for uint256;
    
    address public adminWallet;
    address public withdrawWallet;
    
    uint256 public unlockFee;  // prefer 10% 
    uint256 public depositFee; // prefer 0% 
    
    ERC20Token _token;
    
    modifier onlyAdmin() {
        require(msg.sender == adminWallet, 'you are not an admin');
        _;
    }
    
    function changeUnlockFee(uint256 _newFee) external onlyAdmin {
        unlockFee = _newFee;
    }

    function changeDepositkFee(uint256 _newFee) external onlyAdmin {
        depositFee = _newFee;
    }
    
    function changeWithdrawWallet(address _newWallet) external onlyAdmin {
        withdrawWallet = _newWallet;
    }
    
    function changeAdmin(address _newAdmin) external onlyAdmin {
        adminWallet = _newAdmin;
    }
    
    struct Deposit {
        address tokenAddress;
        uint256 tokenAmount;
        uint256 unlockTime;
    }
    
    mapping(address => Deposit[]) public deposits;
    
    //example input parameters: 20 / 200 / 0x.... (uint256/uint256/_adminWallet); 100 - 10%; 20
    constructor(uint256 _depositFee, uint256 _unlockFee, address _adminWallet) public {
        depositFee = _depositFee;
        unlockFee = _unlockFee;
        adminWallet = _adminWallet;
        withdrawWallet = _adminWallet;
    }

    function depositTokens(address _tokenAddress, uint256 _tokenAmount, uint256 _lockTime) external {
        _token = ERC20Token(_tokenAddress);
        uint256 approved = _token.allowance(msg.sender, address(this));
        require(approved >= _tokenAmount, 'you must allow this contract to transfer tokens on your behalf');
        
        //get tokens
        _token.transferFrom(msg.sender, address(this), _tokenAmount);
        uint256 fee = _tokenAmount.mul(depositFee).div(1000);
        uint256 _tokenAmountAfterFee = _tokenAmount.sub(fee);
        _token.transfer(withdrawWallet, fee);

        //create new deposit
        Deposit memory newDeposit;
        newDeposit.tokenAddress = _tokenAddress;
        newDeposit.tokenAmount = _tokenAmountAfterFee;
        newDeposit.unlockTime = now.add(_lockTime);

        //store deposit
        deposits[msg.sender].push(newDeposit);
        
    }

    
    function withdrawTokens(uint256 _depositID) external {
        require(deposits[msg.sender][_depositID].tokenAmount > 0, 'deposit doesnt exists');
        
        Deposit memory currentDeposit = deposits[msg.sender][_depositID];
        if (currentDeposit.unlockTime < now) {
            //return without substracting unlock fee
            uint256 amount = currentDeposit.tokenAmount;
            delete deposits[msg.sender][_depositID];
            _token.transfer(msg.sender, amount);
        } else {
            //return after substracting unlock fee for breaking the rules
            uint256 fee = currentDeposit.tokenAmount.mul(unlockFee).div(1000);
            uint256 _tokenAmountAfterFee = currentDeposit.tokenAmount.sub(fee);
            delete deposits[msg.sender][_depositID];
            _token.transfer(withdrawWallet, fee);
            _token.transfer(msg.sender, _tokenAmountAfterFee);
        }
    }
    
    function checkDepositByID(uint256 _depositID) external view returns (address tokenAddress, uint256 tokenAmount, uint256 unlockTime) {
        require(deposits[msg.sender].length > 0, 'you dont have deposits');
        require(deposits[msg.sender][_depositID].tokenAmount > 0, 'deposit doesnt exists');
        tokenAddress = deposits[msg.sender][_depositID].tokenAddress;
        tokenAmount = deposits[msg.sender][_depositID].tokenAmount;
        unlockTime = deposits[msg.sender][_depositID].unlockTime;
    }
    
    function latestDeposit() external view returns (uint256 _depositID) {
        require(deposits[msg.sender].length > 0, 'you dont have deposits');
        _depositID = deposits[msg.sender].length.sub(1);
    }

    
}
        

Compiler Settings

{"remappings":[],"optimizer":{"runs":200,"enabled":false},"libraries":{},"evmVersion":"istanbul","compilationTarget":{"hodlRich.sol":"hodlRich"}}
              

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","payable":false,"inputs":[{"type":"uint256","name":"_depositFee","internalType":"uint256"},{"type":"uint256","name":"_unlockFee","internalType":"uint256"},{"type":"address","name":"_adminWallet","internalType":"address"}]},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":"","internalType":"address"}],"name":"adminWallet","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"changeAdmin","inputs":[{"type":"address","name":"_newAdmin","internalType":"address"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"changeDepositkFee","inputs":[{"type":"uint256","name":"_newFee","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"changeUnlockFee","inputs":[{"type":"uint256","name":"_newFee","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"changeWithdrawWallet","inputs":[{"type":"address","name":"_newWallet","internalType":"address"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":"tokenAddress","internalType":"address"},{"type":"uint256","name":"tokenAmount","internalType":"uint256"},{"type":"uint256","name":"unlockTime","internalType":"uint256"}],"name":"checkDepositByID","inputs":[{"type":"uint256","name":"_depositID","internalType":"uint256"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"depositFee","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"depositTokens","inputs":[{"type":"address","name":"_tokenAddress","internalType":"address"},{"type":"uint256","name":"_tokenAmount","internalType":"uint256"},{"type":"uint256","name":"_lockTime","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":"tokenAddress","internalType":"address"},{"type":"uint256","name":"tokenAmount","internalType":"uint256"},{"type":"uint256","name":"unlockTime","internalType":"uint256"}],"name":"deposits","inputs":[{"type":"address","name":"","internalType":"address"},{"type":"uint256","name":"","internalType":"uint256"}],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"_depositID","internalType":"uint256"}],"name":"latestDeposit","inputs":[],"constant":true},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"unlockFee","inputs":[],"constant":true},{"type":"function","stateMutability":"nonpayable","payable":false,"outputs":[],"name":"withdrawTokens","inputs":[{"type":"uint256","name":"_depositID","internalType":"uint256"}],"constant":false},{"type":"function","stateMutability":"view","payable":false,"outputs":[{"type":"address","name":"","internalType":"address"}],"name":"withdrawWallet","inputs":[],"constant":true}]
              

Contract Creation Code

Verify & Publish
0x608060405234801561001057600080fd5b50604051611cc3380380611cc38339818101604052606081101561003357600080fd5b810190808051906020019092919080519060200190929190805190602001909291905050508260038190555081600281905550806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555080600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550505050611bca806100f96000396000f3fe608060405234801561001057600080fd5b50600436106100cf5760003560e01c80635ede942f1161008c578063895dde7b11610066578063895dde7b146102ca5780638f283970146102e8578063bf39f7061461032c578063d6d68177146103a8576100cf565b80635ede942f1461021e57806367a527931461026257806385d178f414610280576100cf565b80630bd93058146100d45780631291a51f146100f2578063315a095d1461012057806336b19cd71461014e578063574b84fc146101985780635c5b9f8f146101c6575b600080fd5b6100dc610444565b6040518082815260200191505060405180910390f35b61011e6004803603602081101561010857600080fd5b8101908080359060200190929190505050610558565b005b61014c6004803603602081101561013657600080fd5b8101908080359060200190929190505050610624565b005b610156610c2f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101c4600480360360208110156101ae57600080fd5b8101908080359060200190929190505050610c54565b005b61021c600480360360608110156101dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610d20565b005b6102606004803603602081101561023457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611268565b005b61026a61136e565b6040518082815260200191505060405180910390f35b610288611374565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102d261139a565b6040518082815260200191505060405180910390f35b61032a600480360360208110156102fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113a0565b005b6103586004803603602081101561034257600080fd5b81019080803590602001909291905050506114a5565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b6103f4600480360360408110156103be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611773565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b600080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050116104fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f796f7520646f6e742068617665206465706f736974730000000000000000000081525060200191505060405180910390fd5b6105536001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506117d790919063ffffffff16565b905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461061a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f796f7520617265206e6f7420616e2061646d696e00000000000000000000000081525060200191505060405180910390fd5b8060038190555050565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061067057fe5b906000526020600020906003020160010154116106f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6465706f73697420646f65736e7420657869737473000000000000000000000081525060200191505060405180910390fd5b6106fd611aff565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061074757fe5b90600052602060002090600302016040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815250509050428160400151101561095e57600081602001519050600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061082b57fe5b9060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000905560028201600090555050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561091c57600080fd5b505af1158015610930573d6000803e3d6000fd5b505050506040513d602081101561094657600080fd5b81019080805190602001909291905050505050610c2b565b600061098d6103e861097f600254856020015161182190919063ffffffff16565b6118a790919063ffffffff16565b905060006109a88284602001516117d790919063ffffffff16565b9050600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481106109f457fe5b9060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000905560028201600090555050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610b0757600080fd5b505af1158015610b1b573d6000803e3d6000fd5b505050506040513d6020811015610b3157600080fd5b810190808051906020019092919050505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610bec57600080fd5b505af1158015610c00573d6000803e3d6000fd5b505050506040513d6020811015610c1657600080fd5b81019080805190602001909291905050505050505b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f796f7520617265206e6f7420616e2061646d696e00000000000000000000000081525060200191505060405180910390fd5b8060028190555050565b82600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610e3657600080fd5b505afa158015610e4a573d6000803e3d6000fd5b505050506040513d6020811015610e6057600080fd5b8101908080519060200190929190505050905082811015610ecc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180611b37603e913960400191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610fa957600080fd5b505af1158015610fbd573d6000803e3d6000fd5b505050506040513d6020811015610fd357600080fd5b81019080805190602001909291905050505060006110106103e86110026003548761182190919063ffffffff16565b6118a790919063ffffffff16565b9050600061102782866117d790919063ffffffff16565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156110f457600080fd5b505af1158015611108573d6000803e3d6000fd5b505050506040513d602081101561111e57600080fd5b810190808051906020019092919050505050611138611aff565b86816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181602001818152505061118d85426118f190919063ffffffff16565b816040018181525050600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015550505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461132a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f796f7520617265206e6f7420616e2061646d696e00000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611462576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f796f7520617265206e6f7420616e2061646d696e00000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011611561576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f796f7520646f6e742068617665206465706f736974730000000000000000000081525060200191505060405180910390fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002085815481106115ad57fe5b90600052602060002090600302016001015411611632576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6465706f73697420646f65736e7420657869737473000000000000000000000081525060200191505060405180910390fd5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061167c57fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481106116fa57fe5b9060005260206000209060030201600101549150600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061175857fe5b90600052602060002090600302016002015490509193909250565b6005602052816000526040600020818154811061178c57fe5b9060005260206000209060030201600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b600061181983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611979565b905092915050565b60008083141561183457600090506118a1565b600082840290508284828161184557fe5b041461189c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611b756021913960400191505060405180910390fd5b809150505b92915050565b60006118e983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a39565b905092915050565b60008082840190508381101561196f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000838311158290611a26576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156119eb5780820151818401526020810190506119d0565b50505050905090810190601f168015611a185780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290611ae5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611aaa578082015181840152602081019050611a8f565b50505050905090810190601f168015611ad75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611af157fe5b049050809150509392505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152509056fe796f75206d75737420616c6c6f77207468697320636f6e747261637420746f207472616e7366657220746f6b656e73206f6e20796f757220626568616c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72315820b308210ad5364fcb27825880270c4f8ec92e1b9cc9d8c75e8b25b31e36ad100f64736f6c634300050e00320000000000000000000000000000000000000000000000000000000000000014000000000000000000000000000000000000000000000000000000000000012c00000000000000000000000083433a1c604ca804e5f945a2dd21973d21670f50

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106100cf5760003560e01c80635ede942f1161008c578063895dde7b11610066578063895dde7b146102ca5780638f283970146102e8578063bf39f7061461032c578063d6d68177146103a8576100cf565b80635ede942f1461021e57806367a527931461026257806385d178f414610280576100cf565b80630bd93058146100d45780631291a51f146100f2578063315a095d1461012057806336b19cd71461014e578063574b84fc146101985780635c5b9f8f146101c6575b600080fd5b6100dc610444565b6040518082815260200191505060405180910390f35b61011e6004803603602081101561010857600080fd5b8101908080359060200190929190505050610558565b005b61014c6004803603602081101561013657600080fd5b8101908080359060200190929190505050610624565b005b610156610c2f565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6101c4600480360360208110156101ae57600080fd5b8101908080359060200190929190505050610c54565b005b61021c600480360360608110156101dc57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291908035906020019092919080359060200190929190505050610d20565b005b6102606004803603602081101561023457600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff169060200190929190505050611268565b005b61026a61136e565b6040518082815260200191505060405180910390f35b610288611374565b604051808273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200191505060405180910390f35b6102d261139a565b6040518082815260200191505060405180910390f35b61032a600480360360208110156102fe57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff1690602001909291905050506113a0565b005b6103586004803603602081101561034257600080fd5b81019080803590602001909291905050506114a5565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b6103f4600480360360408110156103be57600080fd5b81019080803573ffffffffffffffffffffffffffffffffffffffff16906020019092919080359060200190929190505050611773565b604051808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001838152602001828152602001935050505060405180910390f35b600080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002080549050116104fd576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f796f7520646f6e742068617665206465706f736974730000000000000000000081525060200191505060405180910390fd5b6105536001600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020805490506117d790919063ffffffff16565b905090565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461061a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f796f7520617265206e6f7420616e2061646d696e00000000000000000000000081525060200191505060405180910390fd5b8060038190555050565b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061067057fe5b906000526020600020906003020160010154116106f5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6465706f73697420646f65736e7420657869737473000000000000000000000081525060200191505060405180910390fd5b6106fd611aff565b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020828154811061074757fe5b90600052602060002090600302016040518060600160405290816000820160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001600182015481526020016002820154815250509050428160400151101561095e57600081602001519050600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020838154811061082b57fe5b9060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000905560028201600090555050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b15801561091c57600080fd5b505af1158015610930573d6000803e3d6000fd5b505050506040513d602081101561094657600080fd5b81019080805190602001909291905050505050610c2b565b600061098d6103e861097f600254856020015161182190919063ffffffff16565b6118a790919063ffffffff16565b905060006109a88284602001516117d790919063ffffffff16565b9050600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481106109f457fe5b9060005260206000209060030201600080820160006101000a81549073ffffffffffffffffffffffffffffffffffffffff0219169055600182016000905560028201600090555050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610b0757600080fd5b505af1158015610b1b573d6000803e3d6000fd5b505050506040513d6020811015610b3157600080fd5b810190808051906020019092919050505050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb33836040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b158015610bec57600080fd5b505af1158015610c00573d6000803e3d6000fd5b505050506040513d6020811015610c1657600080fd5b81019080805190602001909291905050505050505b5050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614610d16576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f796f7520617265206e6f7420616e2061646d696e00000000000000000000000081525060200191505060405180910390fd5b8060028190555050565b82600460006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055506000600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663dd62ed3e33306040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018273ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019250505060206040518083038186803b158015610e3657600080fd5b505afa158015610e4a573d6000803e3d6000fd5b505050506040513d6020811015610e6057600080fd5b8101908080519060200190929190505050905082811015610ecc576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252603e815260200180611b37603e913960400191505060405180910390fd5b600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff166323b872dd3330866040518463ffffffff1660e01b8152600401808473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020018281526020019350505050602060405180830381600087803b158015610fa957600080fd5b505af1158015610fbd573d6000803e3d6000fd5b505050506040513d6020811015610fd357600080fd5b81019080805190602001909291905050505060006110106103e86110026003548761182190919063ffffffff16565b6118a790919063ffffffff16565b9050600061102782866117d790919063ffffffff16565b9050600460009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1663a9059cbb600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16846040518363ffffffff1660e01b8152600401808373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200182815260200192505050602060405180830381600087803b1580156110f457600080fd5b505af1158015611108573d6000803e3d6000fd5b505050506040513d602081101561111e57600080fd5b810190808051906020019092919050505050611138611aff565b86816000019073ffffffffffffffffffffffffffffffffffffffff16908173ffffffffffffffffffffffffffffffffffffffff16815250508181602001818152505061118d85426118f190919063ffffffff16565b816040018181525050600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819080600181540180825580915050906001820390600052602060002090600302016000909192909190915060008201518160000160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550602082015181600101556040820151816002015550505050505050505050565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff161461132a576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f796f7520617265206e6f7420616e2061646d696e00000000000000000000000081525060200191505060405180910390fd5b80600160006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b60035481565b600160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1681565b60025481565b6000809054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff163373ffffffffffffffffffffffffffffffffffffffff1614611462576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260148152602001807f796f7520617265206e6f7420616e2061646d696e00000000000000000000000081525060200191505060405180910390fd5b806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555050565b600080600080600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000208054905011611561576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260168152602001807f796f7520646f6e742068617665206465706f736974730000000000000000000081525060200191505060405180910390fd5b6000600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002085815481106115ad57fe5b90600052602060002090600302016001015411611632576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825260158152602001807f6465706f73697420646f65736e7420657869737473000000000000000000000081525060200191505060405180910390fd5b600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061167c57fe5b906000526020600020906003020160000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff169250600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002084815481106116fa57fe5b9060005260206000209060030201600101549150600560003373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020848154811061175857fe5b90600052602060002090600302016002015490509193909250565b6005602052816000526040600020818154811061178c57fe5b9060005260206000209060030201600091509150508060000160009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16908060010154908060020154905083565b600061181983836040518060400160405280601e81526020017f536166654d6174683a207375627472616374696f6e206f766572666c6f770000815250611979565b905092915050565b60008083141561183457600090506118a1565b600082840290508284828161184557fe5b041461189c576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401808060200182810382526021815260200180611b756021913960400191505060405180910390fd5b809150505b92915050565b60006118e983836040518060400160405280601a81526020017f536166654d6174683a206469766973696f6e206279207a65726f000000000000815250611a39565b905092915050565b60008082840190508381101561196f576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040180806020018281038252601b8152602001807f536166654d6174683a206164646974696f6e206f766572666c6f77000000000081525060200191505060405180910390fd5b8091505092915050565b6000838311158290611a26576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b838110156119eb5780820151818401526020810190506119d0565b50505050905090810190601f168015611a185780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b5060008385039050809150509392505050565b60008083118290611ae5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004018080602001828103825283818151815260200191508051906020019080838360005b83811015611aaa578082015181840152602081019050611a8f565b50505050905090810190601f168015611ad75780820380516001836020036101000a031916815260200191505b509250505060405180910390fd5b506000838581611af157fe5b049050809150509392505050565b6040518060600160405280600073ffffffffffffffffffffffffffffffffffffffff1681526020016000815260200160008152509056fe796f75206d75737420616c6c6f77207468697320636f6e747261637420746f207472616e7366657220746f6b656e73206f6e20796f757220626568616c66536166654d6174683a206d756c7469706c69636174696f6e206f766572666c6f77a265627a7a72315820b308210ad5364fcb27825880270c4f8ec92e1b9cc9d8c75e8b25b31e36ad100f64736f6c634300050e0032