No worries, Erik, glad you got it sorted.

(If there's a useful hint/tip that you could share from this, happy to add
something to the website).

Cheers
Dan



On 23 June 2014 15:37, Erik de Hair <[email protected]> wrote:

> Problem solved. Before doing a debug session I first wanted to rule out
> possible differences between environments. It seemed that the Apache
> reverse proxy for the acceptance testing server wasn't configured
> correctly...
>
> Sorry for the inconvenience.
>
> Erik
>
> ________________________________________
> From: Dan Haywood [[email protected]]
> Sent: Friday, June 20, 2014 1:57 PM
> To: users
> Subject: Re: internal server error after invoking restful action
>
> On 20 June 2014 12:49, Erik de Hair <[email protected]> wrote:
>
> > Ok, I've got remote debugging setup.
> >
> > @Dan: the answer for your question you asked before:
> >
> > The content type in Response.java:806 is
> > application/json;profile=urn:org.restfulobjects:repr-types/error
> >
> >
> thanks...
>
>
>
> > Do you need more information?
> >
> >
> yes, all the above is telling me (unfortunately) is that there's been a
> server-side error.  Which I guess we know.
>
> I think I need to see this breakage first-hand.  Contact me off-list if you
> want to do a remote debugging session.
>
> Dan
>
>
>
>
> > Thanks for your help,
> > Erik
> >
> > ________________________________________
> > From: Dan Haywood [[email protected]]
> > Sent: Thursday, June 19, 2014 10:27 AM
> > To: users
> > Subject: Re: internal server error after invoking restful action
> >
> > It seems that Tomcat is barfing in attempting to render the response
> > generated by RO, so I'm not ruling out there being a bug here in Isis
> > somehow.  But definitely need more information.
> >
> > As suggested before, we can do a remote pairing session if you wish....
> > would like to understand this issue better myself.
> >
> > Dan
> >
> >
> > On 18 June 2014 14:07, Jeroen van der Wal <[email protected]> wrote:
> >
> > > Hi Erik,
> > >
> > > You could try to set up remote debugging:
> > > http://wiki.apache.org/tomcat/FAQ/Developing
> > >
> > >
> >
> http://stackoverflow.com/questions/3835612/remote-debugging-tomcat-with-eclipse
> > >
> > > Cheers,
> > >
> > > Jeroen
> > >
> > >
> > > On Wed, Jun 18, 2014 at 2:26 PM, Erik de Hair <[email protected]> wrote:
> > > > Hi Dan,
> > > >
> > > > Get the same error again. This time it's not related to only one
> method
> > > but I can't access /portal/restful (or sub URI's) anymore. It is only
> on
> > 1
> > > server where the application is remotely deployed. Two others have no
> > > problem. They have the same installed OS, Tomcat versions and JRE.
> > > >
> > > > Any clue? Don't know how to debug this as I can't reproduce it in a
> > > development environment.
> > > >
> > > > StackTrace
> > > > ==================================
> > > >
> > > > javax.servlet.ServletException: Servlet execution threw an exception
> > > >
> > >
> >
> org.apache.isis.viewer.restfulobjects.server.webapp.IsisTransactionFilterForRestfulObjects.doFilter(IsisTransactionFilterForRestfulObjects.java:41)
> > > >
> > >
> >
> org.apache.isis.core.webapp.IsisSessionFilter$SessionState$1.handle(IsisSessionFilter.java:320)
> > > >
> > >
> >
> org.apache.isis.core.webapp.IsisSessionFilter.doFilter(IsisSessionFilter.java:409)
> > > >
> > >
> >
> org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
> > > >
> > >
> >
> org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
> > > >
> > >
> >
> org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
> > > >
> > >
> >
> org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
> > > >
> > >
> >
> org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
> > > >
> > >
> >
> org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
> > > >
> > >
> >
> org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
> > > > root cause
> > > >
> > > > org.apache.tomcat.util.http.parser.TokenMgrError: Lexical error at
> line
> > > 1, column 29.  Encountered: ":" (58), after : ""
> > > >
> > >
> >
> org.apache.tomcat.util.http.parser.HttpParserTokenManager.getNextToken(HttpParserTokenManager.java:434)
> > > >
> > >
> org.apache.tomcat.util.http.parser.HttpParser.jj_ntk(HttpParser.java:300)
> > > >
> > >
> >
> org.apache.tomcat.util.http.parser.HttpParser.MediaType(HttpParser.java:21)
> > > >
> > >
> org.apache.catalina.connector.Response.setContentType(Response.java:806)
> > > >
> > >
> >
> org.apache.catalina.connector.Response.checkSpecialHeader(Response.java:1140)
> > > >
> > > org.apache.catalina.connector.Response.addHeader(Response.java:1121)
> > > >
> > >
> >
> org.apache.catalina.connector.ResponseFacade.addHeader(ResponseFacade.java:547)
> > > >
> > >
> >
> org.jboss.resteasy.plugins.server.servlet.HttpServletResponseHeaders.addResponseHeader(HttpServletResponseHeaders.java:64)
> > > >
> > >
> >
> org.jboss.resteasy.plugins.server.servlet.HttpServletResponseHeaders.add(HttpServletResponseHeaders.java:50)
> > > >
> > >
> >
> org.jboss.resteasy.plugins.server.servlet.HttpServletResponseHeaders.putAll(HttpServletResponseHeaders.java:119)
> > > >
> > >
> >
> org.jboss.resteasy.core.ServerResponse.commitHeaders(ServerResponse.java:312)
> > > >
> > >
> org.jboss.resteasy.core.ServerResponse$1.commit(ServerResponse.java:232)
> > > >
> > >
> >
> org.jboss.resteasy.util.CommitHeaderOutputStream.commit(CommitHeaderOutputStream.java:50)
> > > >
> > >
> >
> org.jboss.resteasy.util.CommitHeaderOutputStream.write(CommitHeaderOutputStream.java:63)
> > > >
> > >
> >
> org.jboss.resteasy.plugins.providers.StringTextStar.writeTo(StringTextStar.java:60)
> > > >
> > >
> >
> org.jboss.resteasy.plugins.providers.StringTextStar.writeTo(StringTextStar.java:20)
> > > >
> > > org.jboss.resteasy.core.ServerResponse.writeTo(ServerResponse.java:243)
> > > >
> > >
> >
> org.jboss.resteasy.core.SynchronousDispatcher.writeJaxrsResponse(SynchronousDispatcher.java:616)
> > > >
> > >
> >
> org.jboss.resteasy.core.SynchronousDispatcher.writeFailure(SynchronousDispatcher.java:447)
> > > >
> > >
> >
> org.jboss.resteasy.core.SynchronousDispatcher.executeExceptionMapper(SynchronousDispatcher.java:349)
> > > >
> > >
> >
> org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:248)
> > > >
> > >
> >
> org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:130)
> > > >
> > >
> >
> org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)
> > > >
> > >
> >
> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)
> > > >
> > >
> >
> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)
> > > >         javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
> > > >
> > >
> >
> org.apache.isis.viewer.restfulobjects.server.webapp.IsisTransactionFilterForRestfulObjects.doFilter(IsisTransactionFilterForRestfulObjects.java:41)
> > > >
> > >
> >
> org.apache.isis.core.webapp.IsisSessionFilter$SessionState$1.handle(IsisSessionFilter.java:320)
> > > >
> > >
> >
> org.apache.isis.core.webapp.IsisSessionFilter.doFilter(IsisSessionFilter.java:409)
> > > >
> > >
> >
> org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
> > > >
> > >
> >
> org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
> > > >
> > >
> >
> org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
> > > >
> > >
> >
> org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
> > > >
> > >
> >
> org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
> > > >
> > >
> >
> org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
> > > >
> > >
> >
> org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
> > > >
> > > >
> > > > ________________________________________
> > > > From: Erik de Hair [[email protected]]
> > > > Sent: Friday, May 30, 2014 8:35 PM
> > > > To: [email protected]
> > > > Subject: Re: internal server error after invoking restful action
> > > >
> > > > Hi Dan,
> > > >
> > > > I wanted to give the debugging a try but I can't reproduce the
> anymore.
> > > I put back the same return type but it works fine now...
> > > >
> > > > Will contact you when it pops up again.
> > > >
> > > > Erik
> > > >
> > > >
> > > > On 05/30/2014 11:08 AM, Dan Haywood wrote:
> > > >
> > > > On 30 May 2014 07:47, "Erik de Hair" <[email protected]><mailto:
> > > [email protected]> wrote:
> > > >
> > > >
> > > >
> > > > Hi Dan,
> > > >
> > > > Haven't had the possibility to find some more information. Looks
> like I
> > > > should go debugging Tomcat (libraries). Never done that before so
> that
> > > will
> > > > take some time (that I don't have ;-) ).
> > > >
> > > >
> > > >
> > > >
> > > > OK.  We can always do a bit of remote pairing if you want... contact
> me
> > > > off-list.
> > > >
> > > >
> > > >
> > > >
> > > >
> > > > It looks like it depends on the return type of the method. I didn't
> > need
> > > > the return type in this case so I had a workaround. I tagged the
> > message
> > > > for picking this up later and I expect to use the same return type in
> > the
> > > > future so this wil pop up again.
> > > >
> > > >
> > > >
> > > >
> > > > Cheers
> > > >
> > > > Dan
> > > >
> > > >
> > > >
> > > >
> > > > Erik
> > > >
> > > > On 05/29/2014 07:13 AM, Dan Haywood wrote:
> > > >
> > > > Hi Erik,
> > > > any chance of further information on this breakage?
> > > > Thx
> > > > Dan
> > > >
> > > >
> > > > On 20 May 2014 16:27, Dan Haywood <[email protected]
> > ><mailto:
> > > [email protected]><mailto:
> > > > [email protected]><mailto:[email protected]>
> > > wrote:
> > > >
> > > >
> > > >
> > > > Hi Erik,
> > > > hmm, thx for reporting this, but not seen it before.
> > > >
> > > > From the stacktrace, looks like the content type set in the header is
> > > > invalid somehow.
> > > >
> > > > Any chance of putting a breakpoint when the exception is thrown [a]
> and
> > > > then look back at point [b] to see what is being set?
> > > >
> > > > [a]   at org.apache.tomcat.util.http.parser.HttpParserTokenManager.
> > > > getNextToken(HttpParserTokenManager.java:434)
> > > >         at org.apache.tomcat.util.http.parser.HttpParser.jj_ntk(
> > > > HttpParser.java:300)
> > > >         at org.apache.tomcat.util.http.parser.HttpParser.MediaType(
> > > > HttpParser.java:21)
> > > > [b]    at org.apache.catalina.connector.Response.setContentType(
> > > > Response.java:806)
> > > >
> > > > Thx
> > > > Dan
> > > >
> > > >
> > > >
> > > >
> > > > On 20 May 2014 14:33, Erik de Hair <[email protected]><mailto:
> > [email protected]
> > > ><mailto:[email protected]><mailto:[email protected]>
> > > > wrote:
> > > >
> > > >
> > > >
> > > > Hi Dan,
> > > >
> > > > I receive an error ( 500 Internal Server Error) after posting to the
> > > > restful interface. The action itself (confirmNewUserAccount) executed
> > > > successfully (can see that in the logs). Any idea?
> > > >
> > > > @NotInServiceMenu
> > > >     public Contact confirmNewUserAccount(
> > > >             @Named("hashedUsername") String hashedUsername,
> > > >             @Named("password") String password,
> > > >             @Named("passwordRepeated") String passwordRepeated) {
> > > >         Contact user = findUserByHashedUsername(hashedUsername);
> > > >
> > > >         user.setActive(true);
> > > >         user.setEnabled(true);
> > > >
> > > >         user.setPassword(password);
> > > >
> > > >         persistIfNotAlready(user);
> > > >
> > > >         try {
> > > >             sendUserAccountActivedEmail(user.getEmail());
> > > >         } catch(Exception e){
> > > >
> > > >
> > > >
> > >
> >
> warnUser(messages.getString("contacts.confirmnewaccount.error_sending_confirmation_mail"));
> > > >             LOG.warn("error sending confirmation message to activated
> > > > user with email address '"+ user.getEmail() +"'", e);
> > > >         }
> > > >         return user;
> > > >     }
> > > >
> > > > SEVERE: Servlet.service() for servlet
> > [RestfulObjectsRestEasyDispatcher]
> > > > in context with path [/portal] threw exception [Servlet execution
> threw
> > > an
> > > > exception] with root cause
> > > > org.apache.tomcat.util.http.parser.TokenMgrError: Lexical error at
> line
> > > > 1, column 29.  Encountered: ":" (58), after : ""
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.tomcat.util.http.parser.HttpParserTokenManager.getNextToken(HttpParserTokenManager.java:434)
> > > >         at
> > > >
> > org.apache.tomcat.util.http.parser.HttpParser.jj_ntk(HttpParser.java:300)
> > > >         at
> > > >
> > >
> >
> org.apache.tomcat.util.http.parser.HttpParser.MediaType(HttpParser.java:21)
> > > >         at
> > > >
> > org.apache.catalina.connector.Response.setContentType(Response.java:806)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.catalina.connector.Response.checkSpecialHeader(Response.java:1140)
> > > >         at
> > > > org.apache.catalina.connector.Response.addHeader(Response.java:1121)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.catalina.connector.ResponseFacade.addHeader(ResponseFacade.java:547)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.plugins.server.servlet.HttpServletResponseHeaders.addResponseHeader(HttpServletResponseHeaders.java:64)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.plugins.server.servlet.HttpServletResponseHeaders.add(HttpServletResponseHeaders.java:50)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.plugins.server.servlet.HttpServletResponseHeaders.putAll(HttpServletResponseHeaders.java:119)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.core.ServerResponse.commitHeaders(ServerResponse.java:312)
> > > >         at
> > > >
> > org.jboss.resteasy.core.ServerResponse$1.commit(ServerResponse.java:232)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.util.CommitHeaderOutputStream.commit(CommitHeaderOutputStream.java:50)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.util.CommitHeaderOutputStream.write(CommitHeaderOutputStream.java:63)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.plugins.providers.StringTextStar.writeTo(StringTextStar.java:60)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.plugins.providers.StringTextStar.writeTo(StringTextStar.java:20)
> > > >         at
> > > >
> org.jboss.resteasy.core.ServerResponse.writeTo(ServerResponse.java:243)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.core.SynchronousDispatcher.writeJaxrsResponse(SynchronousDispatcher.java:616)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.core.SynchronousDispatcher.writeFailure(SynchronousDispatcher.java:447)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.core.SynchronousDispatcher.executeExceptionMapper(SynchronousDispatcher.java:349)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.core.SynchronousDispatcher.unwrapException(SynchronousDispatcher.java:373)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.core.SynchronousDispatcher.handleApplicationException(SynchronousDispatcher.java:362)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.core.SynchronousDispatcher.handleException(SynchronousDispatcher.java:233)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.core.SynchronousDispatcher.handleInvokerException(SynchronousDispatcher.java:209)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.core.SynchronousDispatcher.getResponse(SynchronousDispatcher.java:557)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:524)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.core.SynchronousDispatcher.invoke(SynchronousDispatcher.java:126)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.plugins.server.servlet.ServletContainerDispatcher.service(ServletContainerDispatcher.java:208)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:55)
> > > >         at
> > > >
> > > >
> > >
> >
> org.jboss.resteasy.plugins.server.servlet.HttpServletDispatcher.service(HttpServletDispatcher.java:50)
> > > >         at
> javax.servlet.http.HttpServlet.service(HttpServlet.java:722)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:305)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.isis.viewer.restfulobjects.server.webapp.IsisTransactionFilterForRestfulObjects.doFilter(IsisTransactionFilterForRestfulObjects.java:41)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.webapp.IsisSessionFilter$SessionState$1.handle(IsisSessionFilter.java:320)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.isis.core.webapp.IsisSessionFilter.doFilter(IsisSessionFilter.java:409)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.shiro.web.servlet.AbstractShiroFilter.executeChain(AbstractShiroFilter.java:449)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.shiro.web.servlet.AbstractShiroFilter$1.call(AbstractShiroFilter.java:365)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.shiro.subject.support.SubjectCallable.doCall(SubjectCallable.java:90)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.shiro.subject.support.SubjectCallable.call(SubjectCallable.java:83)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.shiro.subject.support.DelegatingSubject.execute(DelegatingSubject.java:383)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.shiro.web.servlet.AbstractShiroFilter.doFilterInternal(AbstractShiroFilter.java:362)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.shiro.web.servlet.OncePerRequestFilter.doFilter(OncePerRequestFilter.java:125)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:243)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:210)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:225)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:123)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:472)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:168)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:98)
> > > >         at
> > > >
> > org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:927)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:118)
> > > >         at
> > > >
> > >
> >
> org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:407)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1002)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:579)
> > > >         at
> > > >
> > > >
> > >
> >
> org.apache.tomcat.util.net.JIoEndpoint$SocketProcessor.run(JIoEndpoint.java:310)
> > > >         at
> > > >
> > > >
> > >
> >
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1146)
> > > >         at
> > > >
> > > >
> > >
> >
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
> > > >         at java.lang.Thread.run(Thread.java:701)
> > > >
> > > > Thanks,
> > > > Erik
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > > >
> > >
> >
>

Reply via email to