contract USDOToken is Owned, State, Pausable, ERC20, ERC20Detailed {
    /**
     * @notice Construct a new STableToken
     */
    constructor(address _associatedContract)
        public
        Owned(msg.sender)
        State(_associatedContract)
        ERC20Detailed("USD Oin one", "USDO1", 8)
    {}

    /**
     * @notice Only associatedContract can do it
     * @param receiver The address be sended
     * @param amount The number of token be sended
     */
    function mint(address receiver, uint256 amount)
        external
        notPaused
        onlyAssociatedContract
    {
        _mint(receiver, amount);
    }

    /**
     * @notice Only associatedContract can do it
     * @param account The address of holder
     * @param amount The number of token be burned
     */
    function burn(address account, uint256 amount)
        external
        notPaused
        onlyAssociatedContract
    {
        _burn(account, amount);
    }
}
function burn(address account, uint256 amount)
    external
    notPaused
    onlyAssociatedContract
{
    _burn(account, amount);
}

/**
 * @notice Only associatedContract can do it
 * @param account The address of holder
 * @param amount The number of token be burned
 */