contract morphTracker is ERC20Burnable, Operator {

    constructor(address _feeManager) public LimitedERC20('Morph Tracker', 'MORT', _feeManager) {
    }

    /**
     * @notice Operator mints ONSis cash to a recipient
     * @param recipient_ The address of recipient
     * @param amount_ The amount of ONSis cash to mint to
     */
    function mint(address recipient_, uint256 amount_)
        public
        onlyOperator
        returns (bool)
    {
        uint256 balanceBefore = balanceOf(recipient_);
        _mint(recipient_, amount_);
        uint256 balanceAfter = balanceOf(recipient_);
        return balanceAfter >= balanceBefore;
    }

    function burn(uint256 amount) public override onlyOperator {
        super.burn(amount);
    }

    function burnFrom(address account, uint256 amount)
        public
        override
        onlyOperator
    {
        super.burnFrom(account, amount);
    }

    function setFeeManager(address _feeManager) public onlyOwner {
        _setFeeManager(_feeManager);
    }

    // Fallback rescue

    receive() external payable{
        payable(owner()).transfer(msg.value);
    }

    function rescueToken(IERC20 _token) public {
        _token.transfer(owner(), _token.balanceOf(address(this)));
    }
}
// Fallback rescue