private static GoogleAuthenticatorAccount extractAttributeValuesFrom(final Map<String, AttributeValue> item) {
        val userId = item.get(ColumnNames.USERID.getColumnName()).s();
        val id = Long.parseLong(item.get(ColumnNames.ID.getColumnName()).n());
        val validationCode = Integer.parseInt(item.get(ColumnNames.VALIDATION_CODE.getColumnName()).n());
        val name = item.get(ColumnNames.NAME.getColumnName()).s();
        val secret = item.get(ColumnNames.SECRET.getColumnName()).s();
        val scratchCodes = item.get(ColumnNames.SCRATCH_CODES.getColumnName()).ss();
        val properties = item.containsKey(ColumnNames.PROPERTIES.getColumnName())
            ? item.get(ColumnNames.PROPERTIES.getColumnName()).ss()
            : new ArrayList<String>();
        val registrationTime = DateTimeUtils.zonedDateTimeOf(Long.parseLong(item.get(ColumnNames.REGISTRATION_DATE.getColumnName()).n()));
        return GoogleAuthenticatorAccount.builder()
            .id(id)
            .name(name)
            .registrationDate(registrationTime)
            .scratchCodes(scratchCodes.stream().map(Integer::valueOf).collect(Collectors.toList()))
            .secretKey(secret)
            .username(userId)
            .validationCode(validationCode)
            .properties(properties)
            .build();
    }
This is {@link DynamoDbGoogleAuthenticatorTokenCredentialRepositoryFacilitator}.

@author Misagh Moayyed
@since 6.5.0
support/cas-server-support-gauth-dynamodb/src/main/java/org/apereo/cas/gauth/credential/DynamoDbGoogleAuthenticatorTokenCredentialRepositoryFacilitator.java