<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0">
<base href="https://hibernate.atlassian.net">
<title>Message Title</title>
</head>
<body class="jira" style="color: #333333; font-family: Arial, sans-serif; font-size: 14px; line-height: 1.429">
<table id="background-table" cellpadding="0" cellspacing="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; background-color: #f5f5f5; border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0" bgcolor="#f5f5f5">
<!-- header here -->
<tbody>
<tr>
<td id="header-pattern-container" style="padding: 0; border-collapse: collapse; padding: 10px 20px">
<table id="header-pattern" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td id="header-avatar-image-container" valign="top" style="padding: 0; border-collapse: collapse; vertical-align: top; width: 32px; padding-right: 8px" width="32"> <img id="header-avatar-image" class="image_fix" src="https://avatar-cdn.atlassian.com/e9a87b78166da21cc8672be53544656e?s=48&d=https%3A%2F%2Fhibernate.atlassian.net%2Fsecure%2Fuseravatar%3FavatarId%3D14968%26noRedirect%3Dtrue" height="32" width="32" border="0" style="border-radius: 3px; vertical-align: top"> </td>
<td id="header-text-container" valign="middle" style="padding: 0; border-collapse: collapse; vertical-align: middle; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px"> <a class="user-hover" rel="drenda81" id="email_drenda81" href="https://hibernate.atlassian.net/secure/ViewProfile.jspa?name=drenda81" style="color:#6c797f;; color: #3b73af; text-decoration: none">Daniele Renda</a> <strong>commented</strong> on <a href="https://hibernate.atlassian.net/browse/HHH-12460" style="color: #3b73af; text-decoration: none"><img src="cid:jira-generated-image-avatar-6f81914c-f9c1-4250-a2c7-21ba95997913" height="16" width="16" border="0" align="absmiddle" alt="Improvement"> HHH-12460</a> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="email-content-container" style="padding: 0; border-collapse: collapse; padding: 0 20px">
<table id="email-content-table" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; border-spacing: 0; border-collapse: separate">
<tbody>
<tr>
<!-- there needs to be content in the cell for it to render in some clients -->
<td class="email-content-rounded-top mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 15px; background-color: #ffffff; border-left: 1px solid #cccccc; border-top: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom: 0; border-top-right-radius: 5px; border-top-left-radius: 5px; height: 10px; line-height: 10px; padding: 0 15px 0 16px; mso-line-height-rule: exactly" height="10" bgcolor="#ffffff"> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff">
<table class="page-title-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td style="vertical-align: top;; padding: 0; border-collapse: collapse; padding-right: 5px; font-size: 20px; line-height: 30px; mso-line-height-rule: exactly" class="page-title-pattern-header-container"> <span class="page-title-pattern-header" style="font-family: Arial, sans-serif; padding: 0; font-size: 20px; line-height: 30px; mso-text-raise: 2px; mso-line-height-rule: exactly; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/HHH-12460" style="color: #3b73af; text-decoration: none">Re: DefaultRevisionEntity should permit to use an autoincrement @Id</a> </span> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="text-paragraph-pattern-top" class="email-content-main mobile-expand comment-top-pattern" style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff; border-bottom: none; padding-bottom: 0" bgcolor="#ffffff">
<table class="text-paragraph-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 2px">
<tbody>
<tr>
<td class="text-paragraph-pattern-container mobile-resize-text " style="padding: 0; border-collapse: collapse; padding: 0 0 10px"> <p style="margin: 10px 0 0; margin-top: 0">Sure,<br> this is my own custom revision entity:</p>
<div class="code panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
<div class="codeContent panelContent" style="padding: 9px 12px">
<pre class="code-java" style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal">
@Entity
@RevisionEntity(RevInfoListener.class)
<span class="code-keyword" style="color: #000091">public</span> <span class="code-keyword" style="color: #000091">class </span>RevInfo{
        <span class="code-keyword" style="color: #000091">private</span> <span class="code-keyword" style="color: #000091">static</span> <span class="code-keyword" style="color: #000091">final</span> <span class="code-object" style="color: #910091">long</span> serialVersionUID = 1L;
        <span class="code-keyword" style="color: #000091">private</span> <span class="code-object" style="color: #910091">String</span> username;
        <span class="code-keyword" style="color: #000091">private</span> <span class="code-object" style="color: #910091">String</span> remoteAddress;
        @Id
        @GeneratedValue(strategy = GenerationType.IDENTITY)
        @RevisionNumber
        <span class="code-keyword" style="color: #000091">private</span> <span class="code-object" style="color: #910091">int</span> id;
        @RevisionTimestamp
        <span class="code-keyword" style="color: #000091">private</span> <span class="code-object" style="color: #910091">long</span> timestamp;
        <span class="code-keyword" style="color: #000091">public</span> <span class="code-object" style="color: #910091">int</span> getId() {
                <span class="code-keyword" style="color: #000091">return</span> id;
        }
        <span class="code-keyword" style="color: #000091">public</span> void setId(<span class="code-object" style="color: #910091">int</span> id) {
                <span class="code-keyword" style="color: #000091">this</span>.id = id;
        }
        @Transient
        <span class="code-keyword" style="color: #000091">public</span> Date getRevisionDate() {
                <span class="code-keyword" style="color: #000091">return</span> <span class="code-keyword" style="color: #000091">new</span> Date(timestamp);
        }
        @Transient
        <span class="code-keyword" style="color: #000091">public</span> Instant getRevisionInstant() {
                <span class="code-keyword" style="color: #000091">return</span> LocalDateTime.ofInstant(Instant.ofEpochMilli(timestamp), ZoneOffset.systemDefault()).toInstant(ZoneOffset.UTC);
        }
        <span class="code-keyword" style="color: #000091">public</span> <span class="code-object" style="color: #910091">long</span> getTimestamp() {
                <span class="code-keyword" style="color: #000091">return</span> timestamp;
        }
        <span class="code-keyword" style="color: #000091">public</span> void setTimestamp(<span class="code-object" style="color: #910091">long</span> timestamp) {
                <span class="code-keyword" style="color: #000091">this</span>.timestamp = timestamp;
        }
        <span class="code-keyword" style="color: #000091">public</span> <span class="code-object" style="color: #910091">String</span> getUsername() {
                <span class="code-keyword" style="color: #000091">return</span> username;
        }
        <span class="code-keyword" style="color: #000091">public</span> void setUsername(<span class="code-object" style="color: #910091">String</span> username) {
                <span class="code-keyword" style="color: #000091">this</span>.username = username;
        }
        <span class="code-keyword" style="color: #000091">public</span> <span class="code-object" style="color: #910091">String</span> getRemoteAddress() {
                <span class="code-keyword" style="color: #000091">return</span> remoteAddress;
        }
        <span class="code-keyword" style="color: #000091">public</span> void setRemoteAddress(<span class="code-object" style="color: #910091">String</span> remoteAddress) {
                <span class="code-keyword" style="color: #000091">this</span>.remoteAddress = remoteAddress;
        }
}
</pre>
</div>
</div> <p style="margin: 10px 0 0">In this way Hibernate uses the autoincrement value of the column id in RevInfo rather than hibernate_sequence. </p> <p style="margin: 10px 0 0">Then I've a specific method to get revision using Spring Data Envers (I'm using 2.0.6.RELEASE):</p>
<div class="code panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
<div class="codeContent panelContent" style="padding: 9px 12px">
<pre class="code-java" style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal">
<span class="code-keyword" style="color: #000091">public</span> List<RestRevision> getRestRevisions(List<Revision<<span class="code-object" style="color: #910091">Integer</span>, T>> revisions) {
                List<RestRevision> list = <span class="code-keyword" style="color: #000091">new</span> ArrayList<>();
                <span class="code-keyword" style="color: #000091">for</span> (Revision<<span class="code-object" style="color: #910091">Integer</span>, T> revision : revisions) {
                        RestRevision rev = <span class="code-keyword" style="color: #000091">new</span> RestRevision();
                        rev.setRevisionNumber(revision.getRevisionNumber().get());
                        rev.setRevisionDate(revision.getRevisionDate().get().toInstant(ZoneOffset.UTC));
                        <span class="code-comment" style="color: #808080">// Get custom informations
</span>                        RevInfo revInfo = revision.getMetadata().getDelegate();
                        User user = userRepository.findByUsername(revInfo.getUsername());
                        <span class="code-keyword" style="color: #000091">if</span> (user != <span class="code-keyword" style="color: #000091">null</span>)
                                rev.setAgentName(user.getName());
                        rev.setCreatedBy(revInfo.getUsername());
                        rev.setRemoteAddress(revInfo.getRemoteAddress());
                        list.add(rev);
                }
                <span class="code-comment" style="color: #808080">// Sort revisions by revision number DESC
</span>                Collections.sort(list, <span class="code-keyword" style="color: #000091">new</span> RevisionsByNumberDescComparator());
                <span class="code-keyword" style="color: #000091">return</span> list;
        }
</pre>
</div>
</div> <p style="margin: 10px 0 0">Please note that org.springframework.data.history.Revision (the object I'm using above) define the method getRevisionDate() in this way:</p>
<div class="code panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
<div class="codeContent panelContent" style="padding: 9px 12px">
<pre class="code-java" style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal">
/**
         * Returns the revision date of the revision.
         *
         * @<span class="code-keyword" style="color: #000091">return</span>
         */
        <span class="code-keyword" style="color: #000091">public</span> Optional<LocalDateTime> getRevisionDate() {
                <span class="code-keyword" style="color: #000091">return</span> metadata.getRevisionDate();
        }
</pre>
</div>
</div> <p style="margin: 10px 0 0">So I'm legitimated to assume that that line will return a LocalDateTime, BUT at runtime this is what happens:</p>
<div class="code panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
<div class="codeContent panelContent" style="padding: 9px 12px">
<pre class="code-java" style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal">
java.lang.ClassCastException: java.lang.<span class="code-object" style="color: #910091">Long</span> cannot be <span class="code-keyword" style="color: #000091">cast</span> to java.time.LocalDateTime
        at com.test.server.<span class="code-keyword" style="color: #000091">rest</span>.controllers.RevisionController.getRestRevisions(RevisionController.java:43) ~[classes/:?]
        at com.test.server.<span class="code-keyword" style="color: #000091">rest</span>.controllers.fines.FineController.findRevisions(FineController.java:452) ~[classes/:?]
        at com.test.server.<span class="code-keyword" style="color: #000091">rest</span>.controllers.fines.FineController$$FastClassBySpringCGLIB$$ff90f9d5.invoke(<generated>) ~[classes/:?]
        at org.springframework.cglib.proxy.MethodProxy.invoke(MethodProxy.java:204) ~[spring-core-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$CglibMethodInvocation.invokeJoinpoint(CglibAopProxy.java:747) ~[spring-aop-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:163) ~[spring-aop-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.security.access.intercept.aopalliance.MethodSecurityInterceptor.invoke(MethodSecurityInterceptor.java:69) ~[spring-security-core-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.aop.framework.ReflectiveMethodInvocation.proceed(ReflectiveMethodInvocation.java:185) ~[spring-aop-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.aop.framework.CglibAopProxy$DynamicAdvisedInterceptor.intercept(CglibAopProxy.java:689) ~[spring-aop-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at com.test.server.<span class="code-keyword" style="color: #000091">rest</span>.controllers.fines.FineController$$EnhancerBySpringCGLIB$$de477d3c.findRevisions(<generated>) ~[classes/:?]
        at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) ~[?:1.8.0_131]
        at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) ~[?:1.8.0_131]
        at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) ~[?:1.8.0_131]
        at java.lang.reflect.Method.invoke(Method.java:498) ~[?:1.8.0_131]
        at org.springframework.web.method.support.InvocableHandlerMethod.doInvoke(InvocableHandlerMethod.java:209) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.web.method.support.InvocableHandlerMethod.invokeForRequest(InvocableHandlerMethod.java:136) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.ServletInvocableHandlerMethod.invokeAndHandle(ServletInvocableHandlerMethod.java:102) ~[spring-webmvc-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.invokeHandlerMethod(RequestMappingHandlerAdapter.java:870) ~[spring-webmvc-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.web.servlet.mvc.method.annotation.RequestMappingHandlerAdapter.handleInternal(RequestMappingHandlerAdapter.java:776) ~[spring-webmvc-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.web.servlet.mvc.method.AbstractHandlerMethodAdapter.handle(AbstractHandlerMethodAdapter.java:87) ~[spring-webmvc-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doDispatch(DispatcherServlet.java:991) ~[spring-webmvc-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.web.servlet.DispatcherServlet.doService(DispatcherServlet.java:925) ~[spring-webmvc-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.processRequest(FrameworkServlet.java:978) ~[spring-webmvc-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.web.servlet.FrameworkServlet.doGet(FrameworkServlet.java:870) ~[spring-webmvc-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:635) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.springframework.web.servlet.FrameworkServlet.service(FrameworkServlet.java:855) ~[spring-webmvc-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:742) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:231) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52) ~[tomcat-embed-websocket-8.5.28.jar:8.5.28]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:101) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:158) ~[spring-boot-actuator-2.0.0.RELEASE.jar:2.0.0.RELEASE]
        at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.filterAndRecordMetrics(WebMvcMetricsFilter.java:126) ~[spring-boot-actuator-2.0.0.RELEASE.jar:2.0.0.RELEASE]
        at org.springframework.boot.actuate.metrics.web.servlet.WebMvcMetricsFilter.doFilterInternal(WebMvcMetricsFilter.java:111) ~[spring-boot-actuator-2.0.0.RELEASE.jar:2.0.0.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.springframework.boot.actuate.web.trace.servlet.HttpTraceFilter.doFilterInternal(HttpTraceFilter.java:84) ~[spring-boot-actuator-2.0.0.RELEASE.jar:2.0.0.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:320) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.invoke(FilterSecurityInterceptor.java:127) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.access.intercept.FilterSecurityInterceptor.doFilter(FilterSecurityInterceptor.java:91) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.access.ExceptionTranslationFilter.doFilter(ExceptionTranslationFilter.java:119) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.session.SessionManagementFilter.doFilter(SessionManagementFilter.java:137) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.authentication.AnonymousAuthenticationFilter.doFilter(AnonymousAuthenticationFilter.java:111) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.servletapi.SecurityContextHolderAwareRequestFilter.doFilter(SecurityContextHolderAwareRequestFilter.java:170) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.savedrequest.RequestCacheAwareFilter.doFilter(RequestCacheAwareFilter.java:63) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.authentication.www.BasicAuthenticationFilter.doFilterInternal(BasicAuthenticationFilter.java:158) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at com.test.server.security.JwtAuthenticationTokenFilter.doFilterInternal(JwtAuthenticationTokenFilter.java:87) ~[classes/:?]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.authentication.logout.LogoutFilter.doFilter(LogoutFilter.java:116) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.header.HeaderWriterFilter.doFilterInternal(HeaderWriterFilter.java:66) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.context.SecurityContextPersistenceFilter.doFilter(SecurityContextPersistenceFilter.java:105) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.context.request.async.WebAsyncManagerIntegrationFilter.doFilterInternal(WebAsyncManagerIntegrationFilter.java:56) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.security.web.FilterChainProxy$VirtualFilterChain.doFilter(FilterChainProxy.java:334) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy.doFilterInternal(FilterChainProxy.java:215) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.security.web.FilterChainProxy.doFilter(FilterChainProxy.java:178) ~[spring-security-web-5.0.3.RELEASE.jar:5.0.3.RELEASE]
        at org.springframework.web.filter.DelegatingFilterProxy.invokeDelegate(DelegatingFilterProxy.java:357) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.web.filter.DelegatingFilterProxy.doFilter(DelegatingFilterProxy.java:270) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.springframework.web.filter.RequestContextFilter.doFilterInternal(RequestContextFilter.java:99) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.springframework.web.filter.HttpPutFormContentFilter.doFilterInternal(HttpPutFormContentFilter.java:109) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.springframework.web.filter.HiddenHttpMethodFilter.doFilterInternal(HiddenHttpMethodFilter.java:81) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.springframework.web.filter.CharacterEncodingFilter.doFilterInternal(CharacterEncodingFilter.java:200) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.springframework.web.filter.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:107) ~[spring-web-5.0.4.RELEASE.jar:5.0.4.RELEASE]
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:193) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:166) ~[tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:199) [tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:96) [tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:496) [tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:140) [tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:81) [tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:87) [tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:342) [tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.coyote.http11.Http11Processor.service(Http11Processor.java:803) [tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.coyote.AbstractProcessorLight.process(AbstractProcessorLight.java:66) [tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.coyote.AbstractProtocol$ConnectionHandler.process(AbstractProtocol.java:790) [tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.tomcat.util.net.NioEndpoint$SocketProcessor.doRun(NioEndpoint.java:1459) [tomcat-embed-core-8.5.28.jar:8.5.28]
        at org.apache.tomcat.util.net.SocketProcessorBase.run(SocketProcessorBase.java:49) [tomcat-embed-core-8.5.28.jar:8.5.28]
        at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1142) [?:1.8.0_131]
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:617) [?:1.8.0_131]
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61) [tomcat-embed-core-8.5.28.jar:8.5.28]
        at java.lang.<span class="code-object" style="color: #910091">Thread</span>.run(<span class="code-object" style="color: #910091">Thread</span>.java:748) [?:1.8.0_131]
</pre>
</div>
</div> <p style="margin: 10px 0 0">Debugging I saw that the value revision.getRevisionDate().get() is not a LocalDateTime but it is a Long. I'm not really sure where is the problem but I saw that the class then is being used at runtime when I'm not extending DefaultRevisionEntity is <a href="https://github.com/spring-projects/spring-data-commons/blob/master/src/main/java/org/springframework/data/history/AnnotationRevisionMetadata.java" class="external-link" rel="nofollow" style="color: #3b73af; text-decoration: none">https://github.com/spring-projects/spring-data-commons/blob/master/src/main/java/org/springframework/data/history/AnnotationRevisionMetadata.java</a>, but the implementation in the release 2.0.6 is different: it is this:</p>
<div class="code panel" style="border-width: 1px;; border: 1px solid #cccccc; background: #f5f5f5; font-size: 12px; line-height: 1.333; font-family: monospace; border: 1px solid #cccccc; -moz-border-radius: 3px; border-radius: 3px; margin: 9px 0">
<div class="codeContent panelContent" style="padding: 9px 12px">
<pre class="code-java" style="margin: 10px 0 0; margin-top: 0; max-height: 30em; overflow: auto; white-space: pre-wrap; word-wrap: normal">
/*
* Copyright 2012-2017 the original author or authors.
*
* Licensed under the Apache License, Version 2.0 (the <span class="code-quote" style="color: #009100">"License"</span>);
* you may not use <span class="code-keyword" style="color: #000091">this</span> file except in compliance with the License.
* You may obtain a copy of the License at
*
* http:<span class="code-comment" style="color: #808080">//www.apache.org/licenses/LICENSE-2.0
</span> *
* Unless required by applicable law or agreed to in writing, software
* distributed under the License is distributed on an <span class="code-quote" style="color: #009100">"AS IS"</span> BASIS,
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
* See the License <span class="code-keyword" style="color: #000091">for</span> the specific language governing permissions and
* limitations under the License.
*/
<span class="code-keyword" style="color: #000091">package</span> org.springframework.data.history;
<span class="code-keyword" style="color: #000091">import</span> java.lang.annotation.Annotation;
<span class="code-keyword" style="color: #000091">import</span> java.time.LocalDateTime;
<span class="code-keyword" style="color: #000091">import</span> java.util.Optional;
<span class="code-keyword" style="color: #000091">import</span> org.springframework.data.util.AnnotationDetectionFieldCallback;
<span class="code-keyword" style="color: #000091">import</span> org.springframework.data.util.Lazy;
<span class="code-keyword" style="color: #000091">import</span> org.springframework.util.Assert;
<span class="code-keyword" style="color: #000091">import</span> org.springframework.util.ReflectionUtils;
/**
* A {@link RevisionMetadata} implementation that inspects the given object <span class="code-keyword" style="color: #000091">for</span> fields with the configured annotations
* and returns the field's values on calls to {@link #getRevisionDate()} and {@link #getRevisionNumber()}.
*
* @author Oliver Gierke
*/
<span class="code-keyword" style="color: #000091">public</span> <span class="code-keyword" style="color: #000091">class </span>AnnotationRevisionMetadata<N <span class="code-keyword" style="color: #000091">extends</span> <span class="code-object" style="color: #910091">Number</span> & Comparable<N>> <span class="code-keyword" style="color: #000091">implements</span> RevisionMetadata<N> {
        <span class="code-keyword" style="color: #000091">private</span> <span class="code-keyword" style="color: #000091">final</span> <span class="code-object" style="color: #910091">Object</span> entity;
        <span class="code-keyword" style="color: #000091">private</span> <span class="code-keyword" style="color: #000091">final</span> Lazy<Optional<N>> revisionNumber;
        <span class="code-keyword" style="color: #000091">private</span> <span class="code-keyword" style="color: #000091">final</span> Lazy<Optional<LocalDateTime>> revisionDate;
        /**
         * Creates a <span class="code-keyword" style="color: #000091">new</span> {@link AnnotationRevisionMetadata} inspecting the given entity <span class="code-keyword" style="color: #000091">for</span> the given annotations. If no
         * annotations will be provided these values will not be looked up from the entity and <span class="code-keyword" style="color: #000091">return</span> {@literal <span class="code-keyword" style="color: #000091">null</span>}.
         *
         * @param entity must not be {@literal <span class="code-keyword" style="color: #000091">null</span>}.
         * @param revisionNumberAnnotation must not be {@literal <span class="code-keyword" style="color: #000091">null</span>}.
         * @param revisionTimeStampAnnotation must not be {@literal <span class="code-keyword" style="color: #000091">null</span>}.
         */
        <span class="code-keyword" style="color: #000091">public</span> AnnotationRevisionMetadata(<span class="code-object" style="color: #910091">Object</span> entity, <span class="code-object" style="color: #910091">Class</span><? <span class="code-keyword" style="color: #000091">extends</span> Annotation> revisionNumberAnnotation,
                        <span class="code-object" style="color: #910091">Class</span><? <span class="code-keyword" style="color: #000091">extends</span> Annotation> revisionTimeStampAnnotation) {
                Assert.notNull(entity, <span class="code-quote" style="color: #009100">"Entity must not be <span class="code-keyword" style="color: #000091; color: #009100">null</span>!"</span>);
                Assert.notNull(revisionNumberAnnotation, <span class="code-quote" style="color: #009100">"Revision number annotation must not be <span class="code-keyword" style="color: #000091; color: #009100">null</span>!"</span>);
                Assert.notNull(revisionTimeStampAnnotation, <span class="code-quote" style="color: #009100">"Revision time stamp annotation must not be <span class="code-keyword" style="color: #000091; color: #009100">null</span>!"</span>);
                <span class="code-keyword" style="color: #000091">this</span>.entity = entity;
                <span class="code-keyword" style="color: #000091">this</span>.revisionNumber = detectAnnotation(entity, revisionNumberAnnotation);
                <span class="code-keyword" style="color: #000091">this</span>.revisionDate = detectAnnotation(entity, revisionTimeStampAnnotation);
        }
        /*
         * (non-Javadoc)
         * @see org.springframework.data.repository.history.RevisionMetadata#getRevisionNumber()
         */
        <span class="code-keyword" style="color: #000091">public</span> Optional<N> getRevisionNumber() {
                <span class="code-keyword" style="color: #000091">return</span> revisionNumber.get();
        }
        /*
         * (non-Javadoc)
         * @see org.springframework.data.history.RevisionMetadata#getRevisionDate()
         */
        <span class="code-keyword" style="color: #000091">public</span> Optional<LocalDateTime> getRevisionDate() {
                <span class="code-keyword" style="color: #000091">return</span> revisionDate.get();
        }
        /*
         * (non-Javadoc)
         * @see org.springframework.data.repository.history.RevisionMetadata#getDelegate()
         */
        @SuppressWarnings(<span class="code-quote" style="color: #009100">"unchecked"</span>)
        <span class="code-keyword" style="color: #000091">public</span> <T> T getDelegate() {
                <span class="code-keyword" style="color: #000091">return</span> (T) entity;
        }
        <span class="code-keyword" style="color: #000091">private</span> <span class="code-keyword" style="color: #000091">static</span> <T> Lazy<Optional<T>> detectAnnotation(<span class="code-object" style="color: #910091">Object</span> entity, <span class="code-object" style="color: #910091">Class</span><? <span class="code-keyword" style="color: #000091">extends</span> Annotation> annotationType) {
                <span class="code-keyword" style="color: #000091">return</span> Lazy.of(() -> {
                        AnnotationDetectionFieldCallback callback = <span class="code-keyword" style="color: #000091">new</span> AnnotationDetectionFieldCallback(annotationType);
                        ReflectionUtils.doWithFields(entity.getClass(), callback);
                        <span class="code-keyword" style="color: #000091">return</span> Optional.ofNullable(callback.getValue(entity));
                });
        }
}
</pre>
</div>
</div> <p style="margin: 10px 0 0">I hope you have some hint because I don't know what else to do. Thanks</p> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td class="email-content-main mobile-expand " style="padding: 0; border-collapse: collapse; border-left: 1px solid #cccccc; border-right: 1px solid #cccccc; border-top: 0; border-bottom: 0; padding: 0 15px 0 16px; background-color: #ffffff" bgcolor="#ffffff"> <script type="application/ld+json">
{
"@context": "http://schema.org",
"@type": "EmailMessage",
"description": "View Issue",
"potentialAction": {
"@type": "ViewAction",
"target": "https://hibernate.atlassian.net/browse/HHH-12460?inbox=true&focusedCommentId=101775&page=com.atlassian.jira.plugin.system.issuetabpanels%3Acomment-tabpanel#comment-101775",
"name": "View Comment"
},
"publisher": {
"@type": "Organization",
"name": "Atlassian",
"url": "https://www.atlassian.com"
}
}
</script>
<table id="actions-pattern" cellspacing="0" cellpadding="0" border="0" width="100%" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 1px">
<tbody>
<tr>
<td id="actions-pattern-container" valign="middle" style="padding: 0; border-collapse: collapse; padding: 10px 0 10px 24px; vertical-align: middle; padding-left: 0">
<table align="left" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td class="actions-pattern-action-icon-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 0; vertical-align: middle"> <a href="https://hibernate.atlassian.net/browse/HHH-12460#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none"> <img class="actions-pattern-action-icon-image" src="cid:jira-generated-image-static-comment-icon-7fc7b6a4-793e-4db4-ac05-cced18e7f80c" alt="Add Comment" title="Add Comment" height="16" width="16" border="0" style="vertical-align: middle"> </a> </td>
<td class="actions-pattern-action-text-container" style="padding: 0; border-collapse: collapse; font-family: Arial, sans-serif; font-size: 14px; line-height: 20px; mso-line-height-rule: exactly; mso-text-raise: 4px; padding-left: 5px"> <a href="https://hibernate.atlassian.net/browse/HHH-12460#add-comment" target="_blank" title="Add Comment" style="color: #3b73af; text-decoration: none">Add Comment</a> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table> </td>
</tr>
<!-- there needs to be content in the cell for it to render in some clients -->
<tr>
<td class="email-content-rounded-bottom mobile-expand" style="padding: 0; border-collapse: collapse; color: #ffffff; padding: 0 15px 0 16px; height: 5px; line-height: 5px; background-color: #ffffff; border-top: 0; border-left: 1px solid #cccccc; border-bottom: 1px solid #cccccc; border-right: 1px solid #cccccc; border-bottom-right-radius: 5px; border-bottom-left-radius: 5px; mso-line-height-rule: exactly" height="5" bgcolor="#ffffff"> </td>
</tr>
</tbody>
</table> </td>
</tr>
<tr>
<td id="footer-pattern" style="padding: 0; border-collapse: collapse; padding: 12px 20px">
<table id="footer-pattern-container" cellspacing="0" cellpadding="0" border="0" style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td id="footer-pattern-mobile-separated-links" class="mobile-resize-text" width="100%" colspan="2" style="padding: 0; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> Get Jira notifications on your phone! Download the Jira Cloud app for <a href="https://play.google.com/store/apps/details?id=com.atlassian.android.jira.core&referrer=utm_source%3DNotificationLink%26utm_medium%3DEmail" style="color: #3b73af; text-decoration: none">Android</a> or <a href="https://itunes.apple.com/app/apple-store/id1006972087?pt=696495&ct=EmailNotificationLink&mt=8" style="color: #3b73af; text-decoration: none">iOS</a>
<hr> </td>
</tr>
<tr>
<td id="footer-pattern-text" class="mobile-resize-text" width="100%" style="padding: 0; border-collapse: collapse; color: #999999; font-size: 12px; line-height: 18px; font-family: Arial, sans-serif; mso-line-height-rule: exactly; mso-text-raise: 2px"> This message was sent by Atlassian Jira <span id="footer-build-information">(v1001.0.0-SNAPSHOT#100082-<span title="69e6196a4b3ed7fd7b061b367bd5a33f0a0ef662" data-commit-id="69e6196a4b3ed7fd7b061b367bd5a33f0a0ef662}">sha1:69e6196</span>)</span> </td>
<td id="footer-pattern-logo-desktop-container" valign="top" style="padding: 0; border-collapse: collapse; padding-left: 20px; vertical-align: top">
<table style="border-collapse: collapse; mso-table-lspace: 0; mso-table-rspace: 0">
<tbody>
<tr>
<td id="footer-pattern-logo-desktop-padding" style="padding: 0; border-collapse: collapse; padding-top: 3px; opacity: 0.150"> <img id="footer-pattern-logo-desktop" src="cid:jira-generated-image-static-footer-desktop-logo-f9952314-8aca-4436-a026-afc24d0fc547" alt="Atlassian logo" title="Atlassian logo" width="192" height="24" class="image_fix"> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table> </td>
</tr>
</tbody>
</table>
<img src="https://u4043402.ct.sendgrid.net/wf/open?upn=YNXLe5Uzuivj8jGpuXra04BSJ-2BS7raa1puTAtyVUP-2F0UG25sB-2BHToWWBMcbXwnNU40YLH3Dzs81DJ-2FRlPnoiE5LAnO-2FwrqPxDh7-2FHboy1xdBuNirhokWbPWoH0SXcEmZM-2FQaZfw0JR2Zuk-2BGt2iRijB0eXhoLZ8JAXUSS-2Fju404Jzbs-2Fz04zepCKJ9lBpH04ssEkDZb1gYy7WOxjULE-2BzVKbzhuqf6HvRH8WziRtx-2BY3RNK4zAt8qBVaXBd3Qe3-2Fe9qxZZtBMmAfsLIHoGLYmfRdqhsjt-2FhcZVr68NhUrj5MeVK9pJvEUYyJjCpaeLqA6Mhvu-2Fb9xS0pekcVDD6Qe1AtDN3bJYpNORZzoKUzkv23leWFqB3wb3Rme2-2Bp-2FI-2Bq-2F7w9eoqrPLpwEu1xHo5crsk7yWk4zINQI2erzB-2Fwv5xcEMjCWHWcZ1TliFiwuYlEmhV51p3qRJikvLq578E3dg-3D-3D" alt="" width="1" height="1" border="0" style="height:1px !important;width:1px !important;border-width:0 !important;margin-top:0 !important;margin-bottom:0 !important;margin-right:0 !important;margin-left:0 !important;padding-top:0 !important;padding-bottom:0 !important;padding-right:0 !important;padding-left:0 !important;"/>
</body>
</html>