incubator-esme-dev mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Ethan Jewett <esjew...@gmail.com>
Subject Re: Move to latest Lift release for 1.2
Date Sat, 11 Dec 2010 14:18:18 GMT
Doh! This is what happens when I'm working on ESME and reading emails
at the same time. Really sorry Vladimir. Will take a look and see if I
can apply the changes today :-)

Ethan

On Sat, Dec 11, 2010 at 3:09 PM, Richard Hirsch <hirsch.dick@gmail.com> wrote:
> @Ethan: The files are already attached to the JIRA item .  Could you
> try them out and then commit them. I currently don't have good SVN
> access from home.
>
> D.
>
> On Sat, Dec 11, 2010 at 3:03 PM, Ethan Jewett <esjewett@gmail.com> wrote:
>> Hi Vladimir,
>>
>> As Dick mentioned, attaching source files to emails on this list
>> doesn't work. (On your last email only the pom.xml file came through
>> and on this one we didn't receive anything.)
>>
>> The best thing to do in order to get your changes accepted directly is
>> make a diff (based on the anonymous SVN repository [1]) and then
>> attach it to the Jira item ESME-313 [2] (don't forget to check the box
>> for the license grant). Usually one of the committers will look at one
>> of these diffs within 24 hours or so and either apply it or give
>> feedback.
>>
>> Thanks for finding and addressing all the Lift 2.2 issues!
>>
>> Cheers,
>> Ethan
>>
>> [1] - https://cwiki.apache.org/confluence/display/ESME/Downloading+Source
>> [2] - https://issues.apache.org/jira/browse/ESME-313
>>
>> On Sat, Dec 11, 2010 at 2:29 PM, Vladimir Ivanov <lester.mail@gmail.com> wrote:
>>> 9) TwitterAPI, line 422: an according with
>>> http://groups.google.com/group/liftweb/browse_thread/thread/5841a5d85d62a68f/ee554ff330e987a4?lnk=gst&q=nodeSeqToResponse#ee554ff330e987a4
>>>
>>> method XMLApiHelper.nodeSeqToRespone() had dublicated
>>> method listElemToResponse() in the same trait (due to NodeSeq is a subclass
>>> of Seq[Node]), so it was removed in Lift 2.2
>>>
>>> After that fix the project has been compiled without any errors for me. I
>>> attached all files that were changed to ESME-313 issue. Next step is to
>>> check app for runtime errors.
>>>
>>> 2010/12/8 Richard Hirsch <hirsch.dick@gmail.com>
>>>
>>>> It looks like twitter has moved its libraries to 2.8 - so we are fine
>>>> there as well.
>>>>
>>>> Done all that I can - somebody else with more scala skills has to continue
>>>> now
>>>>
>>>> Here are the new errors:
>>>>
>>>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\bootstrap\liftweb\Boot.scala:231:
>>>> error: overloaded method value startAdmin with alternatives:
>>>> [WARNING]   (config: com.twitter.ostrich.Config,runtime:
>>>> com.twitter.ostrich.RuntimeEnvironment)Unit <and>
>>>> [WARNING]   (configgy: net.lag.configgy.ConfigMap,runtime:
>>>> com.twitter.ostrich.RuntimeEnvironment)Unit
>>>> [WARNING]  cannot be applied to (net.lag.configgy.Config,
>>>> net.lag.configgy.RuntimeEnvironment)
>>>> [WARNING]     ServiceTracker.startAdmin(config, runtime)
>>>> [WARNING]                    ^
>>>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\actor\HttpSender.scala:27:
>>>> error: value testing is not a member of package net.liftweb.http
>>>> [WARNING] import net.liftweb.http.testing._
>>>> [WARNING]                         ^
>>>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\actor\HttpSender.scala:39:
>>>> error: missing parameter type for expanded function ((x0$1) => x0$1
>>>> match {
>>>> [WARNING]   case SendAMessage((action @ _), (msg @ _), (user @ _),
>>>> (reason @ _), (token @ _)) => send(action, msg, user, reason, token)
>>>> [WARNING]   case _ => ()
>>>> [WARNING] })
>>>> [WARNING]   protected def messageHandler = {
>>>> [WARNING]                                  ^
>>>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\actor\SchedulerActor.scala:43:
>>>> error: type mismatch;
>>>> [WARNING]  found   : org.apache.esme.actor.SchedulerActor.SchedulerActor
>>>> [WARNING]  required: String
>>>> [WARNING]         regularsPerAction(id) += regularActor
>>>> [WARNING]                                  ^
>>>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\actor\UserActor.scala:193:
>>>> error: type mismatch;
>>>> [WARNING]  found   : Long
>>>> [WARNING]  required: String
>>>> [WARNING]       case AllowPool(poolId) => pools += poolId
>>>> [WARNING]                                          ^
>>>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\actor\UserActor.scala:264:
>>>> error: value ! is not a member of object
>>>> org.apache.esme.actor.HttpSender
>>>> [WARNING]                 HttpSender ! HttpSender.SendAMessage(m,
msg,
>>>> u, reason, td.uniqueId))
>>>> [WARNING]                 ^
>>>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\actor\UserActor.scala:268:
>>>> error: value ! is not a member of object
>>>> org.apache.esme.actor.HttpSender
>>>> [WARNING]                 HttpSender ! HttpSender.SendAMessage(h,
msg,
>>>> u, reason, td.uniqueId))
>>>> [WARNING]                 ^
>>>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\api\API2.scala:726:
>>>> error: type mismatch;
>>>> [WARNING]  found   : net.liftweb.common.Full[(Int,
>>>> scala.collection.immutable.Map[Nothing,Nothing], object
>>>> net.liftweb.common.Empty)]
>>>> [WARNING]  required: net.liftweb.http.LiftResponse
>>>> [WARNING]     Full((403,Map(),Empty))
>>>> [WARNING]         ^
>>>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\api\TwitterAPI.scala:422:
>>>> error: not found: value nodeSeqToResponse
>>>> [WARNING]       {() => Full(nodeSeqToResponse(toXml(unbox(x)))) }
>>>> [WARNING]                   ^
>>>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\api\TwitterAPI.scala:444:
>>>> error: value next is not a member of Iterable[Any]
>>>> [WARNING]     case m: Map[String, Any] => toJson(m.values.next)
>>>> [WARNING]                                          
      ^
>>>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\lib\AccessPoolMgr.scala:185:
>>>> error: missing arguments for method collect in trait Iterator;
>>>> [WARNING] follow this method with `_' if you want to treat it as a
>>>> partially applied function
>>>> [WARNING]     val permissions = Permission.map(perm =>
>>>> (perm.id.toString, perm.toString)).collect
>>>> [WARNING]
>>>>                   ^
>>>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\model\AccessPool.scala:47:
>>>> error: not found: type long
>>>> [WARNING]   def getPoolName(poolId: long) = {
>>>> [WARNING]                           ^
>>>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\model\AccessPool.scala:49:
>>>> error: value getName is not a member of Any
>>>> [WARNING]       case Full(p) => p.getName
>>>> [WARNING]                         ^
>>>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\model\User.scala:190:
>>>> error: not found: type long
>>>> [WARNING]   def getNickname(userId: long) = {
>>>> [WARNING]                           ^
>>>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\model\User.scala:192:
>>>> error: value nickname is not a member of Any
>>>> [WARNING]       case Full(u) => u.nickname.is
>>>> [WARNING]                         ^
>>>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\model\Message.scala:148:
>>>> error: type mismatch;
>>>> [WARNING]  found   : List[object org.apache.esme.model.User#nickname]
>>>> [WARNING]  required: scala.List[String]
>>>> [WARNING]     val users:List[String] = following.map(user => user.nickname)
>>>> [WARNING]                                          
^
>>>> [WARNING] 16 errors found
>>>>
>>>>
>>>> On Wed, Dec 8, 2010 at 3:04 PM, Richard Hirsch <hirsch.dick@gmail.com>
>>>> wrote:
>>>> > Got answer to last problem from lift list - here are the new errors.
>>>> >
>>>> > Some of the problemsare associated with our use of ostrich and the
>>>> > other libraries from twitter which are based on an older scala version
>>>> > - https://github.com/stevej/ostrich/blob/master/project/build.properties
>>>> >
>>>> >
>>>> > D.
>>>> >
>>>> >
>>>> > [WARNING] error: error while loading StatsMBean, Scala signature
>>>> > StatsMBean has wrong version
>>>> > [WARNING]  expected: 5.0
>>>> > [WARNING]  found: 4.1 in C:\Documents and
>>>> >
>>>> Settings\atw10dw4\.m2\repository\com\twitter\ostrich\1.1.26\ostrich-1.1.26.jar(com/twitter/ostrich/StatsMBean.class)
>>>> > [WARNING] error: error while loading Stats, Scala signature Stats has
>>>> > wrong version
>>>> > [WARNING]  expected: 5.0
>>>> > [WARNING]  found: 4.1 in C:\Documents and
>>>> >
>>>> Settings\atw10dw4\.m2\repository\com\twitter\ostrich\1.1.26\ostrich-1.1.26.jar(com/twitter/ostrich/Stats.class)
>>>> > [WARNING] error: error while loading RuntimeEnvironment, Scala
>>>> > signature RuntimeEnvironment has wrong version
>>>> > [WARNING]  expected: 5.0
>>>> > [WARNING]  found: 4.1 in C:\Documents and
>>>> >
>>>> Settings\atw10dw4\.m2\repository\net\lag\configgy\1.5.3\configgy-1.5.3.jar(net/lag/configgy/RuntimeEnvironment.class)
>>>> > [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\bootstrap\liftweb\Boot.scala:227:
>>>> > error: net.lag.configgy.RuntimeEnvironment does not have a constructor
>>>> > [WARNING]     val runtime = new RuntimeEnvironment(getClass)
>>>> > [WARNING]                   ^
>>>> > [WARNING] error: error while loading Config, Scala signature Config
>>>> > has wrong version
>>>> > [WARNING]  expected: 5.0
>>>> > [WARNING]  found: 4.1 in C:\Documents and
>>>> >
>>>> Settings\atw10dw4\.m2\repository\net\lag\configgy\1.5.3\configgy-1.5.3.jar(net/lag/configgy/Config.class)
>>>> > [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\bootstrap\liftweb\Boot.scala:228:
>>>> > error: net.lag.configgy.Config does not have a constructor
>>>> > [WARNING]     val config = new Config
>>>> > [WARNING]                  ^
>>>> > [WARNING] error: error while loading ServiceTracker, Scala signature
>>>> > ServiceTracker has wrong version
>>>> > [WARNING]  expected: 5.0
>>>> > [WARNING]  found: 4.1 in C:\Documents and
>>>> >
>>>> Settings\atw10dw4\.m2\repository\com\twitter\ostrich\1.1.26\ostrich-1.1.26.jar(com/twitter/ostrich/ServiceTracker.class)
>>>> > [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\actor\HttpSender.scala:27:
>>>> > error: value testing is not a member of package net.liftweb.http
>>>> > [WARNING] import net.liftweb.http.testing._
>>>> > [WARNING]                         ^
>>>> > [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\actor\HttpSender.scala:39:
>>>> > error: missing parameter type for expanded function ((x0$1) => x0$1
>>>> > match {
>>>> > [WARNING]   case SendAMessage((action @ _), (msg @ _), (user @ _),
>>>> > (reason @ _), (token @ _)) => send(action, msg, user, reason, token)
>>>> > [WARNING]   case _ => ()
>>>> > [WARNING] })
>>>> > [WARNING]   protected def messageHandler = {
>>>> > [WARNING]                                  ^
>>>> > [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\actor\SchedulerActor.scala:43:
>>>> > error: type mismatch;
>>>> > [WARNING]  found   : org.apache.esme.actor.SchedulerActor.SchedulerActor
>>>> > [WARNING]  required: String
>>>> > [WARNING]         regularsPerAction(id) += regularActor
>>>> > [WARNING]                                  ^
>>>> > [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\actor\UserActor.scala:193:
>>>> > error: type mismatch;
>>>> > [WARNING]  found   : Long
>>>> > [WARNING]  required: String
>>>> > [WARNING]       case AllowPool(poolId) => pools += poolId
>>>> > [WARNING]                                        
 ^
>>>> > [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\actor\UserActor.scala:264:
>>>> > error: value ! is not a member of object
>>>> > org.apache.esme.actor.HttpSender
>>>> > [WARNING]                 HttpSender ! HttpSender.SendAMessage(m,
msg,
>>>> > u, reason, td.uniqueId))
>>>> > [WARNING]                 ^
>>>> > [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\actor\UserActor.scala:268:
>>>> > error: value ! is not a member of object
>>>> > org.apache.esme.actor.HttpSender
>>>> > [WARNING]                 HttpSender ! HttpSender.SendAMessage(h,
msg,
>>>> > u, reason, td.uniqueId))
>>>> > [WARNING]                 ^
>>>> > [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\api\API2.scala:726:
>>>> > error: type mismatch;
>>>> > [WARNING]  found   : net.liftweb.common.Full[(Int,
>>>> > scala.collection.immutable.Map[Nothing,Nothing], object
>>>> > net.liftweb.common.Empty)]
>>>> > [WARNING]  required: net.liftweb.http.LiftResponse
>>>> > [WARNING]     Full((403,Map(),Empty))
>>>> > [WARNING]         ^
>>>> > [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\api\TwitterAPI.scala:422:
>>>> > error: not found: value nodeSeqToResponse
>>>> > [WARNING]       {() => Full(nodeSeqToResponse(toXml(unbox(x))))
}
>>>> > [WARNING]                   ^
>>>> > [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\api\TwitterAPI.scala:444:
>>>> > error: value next is not a member of Iterable[Any]
>>>> > [WARNING]     case m: Map[String, Any] => toJson(m.values.next)
>>>> > [WARNING]                                        
        ^
>>>> > [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\lib\AccessPoolMgr.scala:185:
>>>> > error: missing arguments for method collect in trait Iterator;
>>>> > [WARNING] follow this method with `_' if you want to treat it as a
>>>> > partially applied function
>>>> > [WARNING]     val permissions = Permission.map(perm =>
>>>> > (perm.id.toString, perm.toString)).collect
>>>> > [WARNING]
>>>> >                   ^
>>>> > [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\model\AccessPool.scala:47:
>>>> > error: not found: type long
>>>> > [WARNING]   def getPoolName(poolId: long) = {
>>>> > [WARNING]                           ^
>>>> > [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\model\AccessPool.scala:49:
>>>> > error: value getName is not a member of Any
>>>> > [WARNING]       case Full(p) => p.getName
>>>> > [WARNING]                         ^
>>>> > [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\model\User.scala:190:
>>>> > error: not found: type long
>>>> > [WARNING]   def getNickname(userId: long) = {
>>>> > [WARNING]                           ^
>>>> > [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\model\User.scala:192:
>>>> > error: value nickname is not a member of Any
>>>> > [WARNING]       case Full(u) => u.nickname.is
>>>> > [WARNING]                         ^
>>>> > [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apache\esme\model\Message.scala:148:
>>>> > error: type mismatch;
>>>> > [WARNING]  found   : List[object org.apache.esme.model.User#nickname]
>>>> > [WARNING]  required: scala.List[String]
>>>> > [WARNING]     val users:List[String] = following.map(user =>
>>>> user.nickname)
>>>> > [WARNING]                                        
  ^
>>>> > [WARNING] 22 errors found
>>>> >
>>>> >
>>>> > On Wed, Dec 8, 2010 at 2:09 PM, Richard Hirsch <hirsch.dick@gmail.com>
>>>> wrote:
>>>> >> I fixed the first problem with the definition.
>>>> >>
>>>> >> I have no idea how to fix the second problem in User.scala.
>>>> >>
>>>> >> D.
>>>> >>
>>>> >> On Wed, Dec 8, 2010 at 1:20 PM, Richard Hirsch <hirsch.dick@gmail.com>
>>>> wrote:
>>>> >>> Created a branch and changed the pom.xml to be based on lift
2.2 RC1
>>>> >>> and scala 2.8.1
>>>> >>>
>>>> >>> Here are the errors:
>>>> >>>
>>>> >>> [INFO] suggestion: remove the scalaVersion from pom.xml
>>>> >>> [ERROR] D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala
>>>> >>> [ERROR]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\..\scala
>>>> >>> [INFO] Compiling 62 source files to
>>>> D:\apache\esme\branches\lift-2.2\trunk\serve
>>>> >>> r\target\classes
>>>> >>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apach
>>>> >>> e\esme\model\Message.scala:489: error: expected start of definition
>>>> >>> [WARNING]   @SearchableProperty{val termVector=TermVector.YES,
val
>>>> analyzer="ste
>>>> >>> mming"}
>>>> >>> [WARNING]                      ^
>>>> >>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apach
>>>> >>> e\esme\model\Message.scala:495: error: expected start of definition
>>>> >>> [WARNING]   @SearchableProperty{val termVector=TermVector.YES,
val
>>>> analyzer="def
>>>> >>> ault"}
>>>> >>> [WARNING]                      ^
>>>> >>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apach
>>>> >>> e\esme\model\Message.scala:498: error: expected start of definition
>>>> >>> [WARNING]   @SearchableProperty{val format="yyyy-MM-dd mm:ss"}
>>>> >>> [WARNING]                      ^
>>>> >>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apach
>>>> >>> e\esme\model\Message.scala:501: error: expected start of definition
>>>> >>> [WARNING]   @SearchableProperty{val termVector=TermVector.YES,
val
>>>> analyzer="def
>>>> >>> ault"}
>>>> >>> [WARNING]                      ^
>>>> >>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apach
>>>> >>> e\esme\model\Message.scala:508: error: expected start of definition
>>>> >>> [WARNING]   @SearchableProperty{val termVector=TermVector.YES,
val
>>>> analyzer="poo
>>>> >>> l"}
>>>> >>> [WARNING]                      ^
>>>> >>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apach
>>>> >>> e\esme\model\User.scala:118: error: illegal start of simple
expression
>>>> >>> [WARNING]     ) ++ SHtml.hidden(doSubmit _)
>>>> >>> [WARNING]     ^
>>>> >>> [WARNING]
>>>> D:\apache\esme\branches\lift-2.2\trunk\server\src\main\scala\org\apach
>>>> >>> e\esme\model\User.scala:119: error: ')' expected but '}' found.
>>>> >>> [WARNING]     }
>>>> >>> [WARNING]     ^
>>>> >>> [WARNING] 7 errors found
>>>> >>>
>>>> >>> Maybe somebody can take a quick look.  Thanks.
>>>> >>>
>>>> >>>
>>>> >>>
>>>> >>>
>>>> >>> On Wed, Dec 8, 2010 at 11:06 AM, Ethan Jewett <esjewett@gmail.com>
>>>> wrote:
>>>> >>>> I can look at it, but it would be better if someone else
could take it
>>>> >>>> on. I still haven't gotten to the user timeline work that
I said I
>>>> >>>> would do :-)
>>>> >>>>
>>>> >>>> Do we currently have a branch with the 2.2 snapshot that
we can work
>>>> in?
>>>> >>>>
>>>> >>>> Ethan
>>>> >>>>
>>>> >>>> On Tue, Dec 7, 2010 at 1:10 PM, Richard Hirsch <hirsch.dick@gmail.com>
>>>> wrote:
>>>> >>>>> I tried it a while back and it didn't compile right
away. There were
>>>> >>>>> scala changes that were necessary that I couldn't fix,
so I left it.
>>>> >>>>>
>>>> >>>>> Anyone else want to take a crack at it?
>>>> >>>>>
>>>> >>>>> D.
>>>> >>>>>
>>>> >>>>> On Tue, Dec 7, 2010 at 1:08 PM, Ethan Jewett <esjewett@gmail.com>
>>>> wrote:
>>>> >>>>>> Sure, as long as it doesn't cause any major issues.
>>>> >>>>>>
>>>> >>>>>> Ethan
>>>> >>>>>>
>>>> >>>>>> On Tue, Dec 7, 2010 at 1:05 PM, Richard Hirsch <
>>>> hirsch.dick@gmail.com> wrote:
>>>> >>>>>>> Do we want to move to the latest lift release
for 1.2? We could get
>>>> >>>>>>> all the latest LAP code that is currently being
developed?
>>>> >>>>>>>
>>>> >>>>>>> D.
>>>> >>>>>>>
>>>> >>>>>>
>>>> >>>>>
>>>> >>>>
>>>> >>>
>>>> >>
>>>> >
>>>>
>>>
>>>
>>>
>>> --
>>> Best Regards,
>>> Vladimir Ivanov
>>>
>>
>

Mime
View raw message