}  if (slot->nssToken) { return nssToken_IsPresent(slot->nssToken);
pk11_IsPresentCertLoad(PK11SlotInfo *slot, PRBool loadCerts){    CK_SLOT_INFO slotInfo;    CK_SESSION_INFO sessionInfo;    CK_RV crv;    /* disabled slots are never present */    if (slot->disabled) {	return PR_FALSE;    }    /* permanent slots are always present */    if (slot->isPerm && (slot->session != CK_INVALID_SESSION)) {	return PR_TRUE;    }    /* removable slots have a flag that says they are present */    if (!slot->isThreadSafe) PK11_EnterSlotMonitor(slot);    if (PK11_GETTAB(slot)->C_GetSlotInfo(slot->slotID,&slotInfo) != CKR_OK) {        if (!slot->isThreadSafe) PK11_ExitSlotMonitor(slot);	return PR_FALSE;    }    if ((slotInfo.flags & CKF_TOKEN_PRESENT) == 0) {	/* if the slot is no longer present, close the session */	if (slot->session != CK_INVALID_SESSION) {	    PK11_GETTAB(slot)->C_CloseSession(slot->session);	    slot->session = CK_INVALID_SESSION;	    /* force certs to be freed */	}        if (!slot->isThreadSafe) PK11_ExitSlotMonitor(slot);	return PR_FALSE;    }    /* use the session Info to determine if the card has been removed and then     * re-inserted */    if (slot->session != CK_INVALID_SESSION) {	crv = PK11_GETTAB(slot)->C_GetSessionInfo(slot->session, &sessionInfo);	if (crv != CKR_OK) {	    PK11_GETTAB(slot)->C_CloseSession(slot->session);	    slot->session = CK_INVALID_SESSION;	}    }    if (!slot->isThreadSafe) PK11_ExitSlotMonitor(slot);    /* card has not been removed, current token info is correct */    if (slot->session != CK_INVALID_SESSION) return PR_TRUE;    /* initialize the token info state */    if (PK11_InitToken(slot,loadCerts) != SECSuccess) {	return PR_FALSE;    }    return PR_TRUE;}