Hi Alex,
I tried to use MX RO but doesn't work. Here's what the info of this test:
Code:
to make a quick test I put this code to run at "initComplete" event:
private function prepareChannelSet(event:Event):void
{
var amfEndpoint:String = "http://localhost:8080/webapp/messagebroker/my-amf";
var channelSet:ChannelSet = new ChannelSet();
var channel:AMFChannel = new AMFChannel("my-amf", amfEndpoint);
channelSet.addChannel(channel);
service.channelSet = channelSet;
}
I add the MX RO as a bead
<j:beads>
<mx:RemoteObject id="service"
result="onResult(event)" fault="onFault(event)"
destination = "myDestination"/>
</j:beads>
After compilation (successful) I get the following trace that should be
fixed:
*/Users/carlosrovira/Dev/Codeoscopic/Source/sgc/webapp/src/main/webapp/javascript/bin/js-debug/App.js*
*end of list of source files*
*oct 11, 2018 1:33:04 PM com.google.javascript.jscomp.LoggerErrorManager
println*
*ADVERTENCIA:
/Users/carlosrovira/Dev/Codeoscopic/Source/sgc/webapp/src/main/webapp/javascript/bin/js-debug/mx/rpc/remoting/Operation.js:103:
WARNING - Bad type annotation. extra @override/@inheritDoc tag. See
https://github.com/google/closure-compiler/wiki/Bad-Type-Annotation
<https://github.com/google/closure-compiler/wiki/Bad-Type-Annotation> for
more information.*
* * @override*
* ^*
*oct 11, 2018 1:33:04 PM com.google.javascript.jscomp.LoggerErrorManager
println*
*ADVERTENCIA:
/Users/carlosrovira/Dev/Codeoscopic/Source/sgc/webapp/src/main/webapp/javascript/bin/js-debug/mx/rpc/remoting/Operation.js:150:
WARNING - Bad type annotation. extra @override/@inheritDoc tag. See
https://github.com/google/closure-compiler/wiki/Bad-Type-Annotation
<https://github.com/google/closure-compiler/wiki/Bad-Type-Annotation> for
more information.*
* * @override*
* ^*
*oct 11, 2018 1:33:04 PM com.google.javascript.jscomp.LoggerErrorManager
println*
*GRAVE:
/Users/carlosrovira/Dev/Codeoscopic/Source/sgc/webapp/src/main/webapp/javascript/bin/js-debug/mx/messaging/config/ServerConfig.js:333:
ERROR - Parse error. invalid assignment target*
* mx.messaging.config.ServerConfig["xml"].child("default-channels") =
newServices.child("default-channels");*
* ^*
*oct 11, 2018 1:33:04 PM com.google.javascript.jscomp.LoggerErrorManager
printSummary*
*ADVERTENCIA: 1 error(s), 2 warning(s)*
*The project 'App' has been successfully compiled and optimized.*
Then the problems at Runtime. Trying to call a method in the service like
this:
*service.someMethod(someParam);*
I get in browser console this error:
*TypeError: this.service.someMethod is not a function. (In
'this.service.someMethod(someParam)', 'this.service.someMethod' is
undefined)*
Congratulations, I you are mostly at 99% to get official MX RemoteObject
working :)
Carlos
El jue., 11 oct. 2018 a las 12:41, Carlos Rovira (<[email protected]>)
escribió:
> Hi Alex,
>
> strangely, now build is passing locally...can't figure why yesterday it
> was failing...maybe part of the build was in the change of day at
> 00:00...just speculating..
>
> I'll try to put mx RO to work and see I see and report :)
>
>
> El jue., 11 oct. 2018 a las 12:18, Carlos Rovira (<[email protected]>)
> escribió:
>
>> Hi Alex,
>>
>> yes, I always compile first compiler, then typedefs and last asjs.
>> I'll try again. Maybe the maven-prepare-release could be doing making
>> some problem with the change of version 0.9.4 to 0.9.5?
>>
>> El jue., 11 oct. 2018 a las 9:30, Alex Harui (<[email protected]>)
>> escribió:
>>
>>> I can't reproduce the failure. It worked on builds.a.o as well. Did
>>> you run mvn on the compiler first?
>>>
>>> -Alex
>>>
>>> On 10/10/18, 4:38 PM, "Carlos Rovira" <[email protected]> wrote:
>>>
>>> I must close for today, tomorrow will try to change net RO for mx RO
>>> if you
>>> finally get this build error fixed.
>>>
>>> Thanks
>>>
>>> Carlos
>>>
>>>
>>> El mié., 10 oct. 2018 a las 23:34, Carlos Rovira (<
>>> [email protected]>)
>>> escribió:
>>>
>>> > That's great Alex! :)
>>> >
>>> > I want to try it but I found the following error building with
>>> maven:
>>> >
>>> >
>>> > [*INFO*] *----------------< *org.apache.royale.framework:MXRoyale*
>>> > >----------------*
>>> >
>>> > [*INFO*] *Building Apache Royale: Framework: Libs: MXRoyale
>>> > 0.9.4-SNAPSHOT [32/118]*
>>> >
>>> > [*INFO*] *--------------------------------[ swc
>>> > ]---------------------------------*
>>> >
>>> > [*INFO*]
>>> >
>>> > [*INFO*] *--- *maven-clean-plugin:3.0.0:clean *(default-clean)* @
>>> MXRoyale*
>>> > ---*
>>> >
>>> > [*INFO*]
>>> >
>>> > [*INFO*] *--- *royale-maven-plugin:0.9.4-SNAPSHOT:generate-extern
>>> > *(default-generate-extern)* @ MXRoyale* ---*
>>> >
>>> > [*INFO*]
>>> >
>>> > [*INFO*] *--- *maven-remote-resources-plugin:1.5:process
>>> > *(process-resource-bundles)* @ MXRoyale* ---*
>>> >
>>> > [*INFO*]
>>> >
>>> > [*INFO*] *--- *maven-resources-plugin:2.7:resources
>>> *(default-resources)*
>>> > @ MXRoyale* ---*
>>> >
>>> > [*INFO*] Using 'UTF-8' encoding to copy filtered resources.
>>> >
>>> > [*INFO*] Copying 3 resources
>>> >
>>> > [*INFO*] Copying 3 resources
>>> >
>>> > [*INFO*]
>>> >
>>> > [*INFO*] *--- *royale-maven-plugin:0.9.4-SNAPSHOT:compile-as
>>> > *(default-compile-as)* @ MXRoyale* ---*
>>> >
>>> > [*INFO*] Executing COMPC in tool group Royale with args:
>>> >
>>> [-load-config=/Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/MXRoyale/target/compile-swf-config.xml,
>>> > -js-compiler-define=COMPILE::JS,true,
>>> > -js-compiler-define=COMPILE::SWF,false,
>>> > -js-compiler-define=GOOG::DEBUG,goog.DEBUG,
>>> > -js-compiler-define=ROYALE::DISPLAYOBJECT,IUIComponent,
>>> > -compiler.targets=SWF,JSRoyale, -compiler.strict-xml=true]
>>> >
>>> > args:
>>> >
>>> >
>>> >
>>> -load-config=/Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/MXRoyale/target/compile-swf-config.xml
>>> >
>>> > -js-compiler-define=COMPILE::JS,true
>>> >
>>> > -js-compiler-define=COMPILE::SWF,false
>>> >
>>> > -js-compiler-define=GOOG::DEBUG,goog.DEBUG
>>> >
>>> > -js-compiler-define=ROYALE::DISPLAYOBJECT,IUIComponent
>>> >
>>> > -compiler.targets=SWF,JSRoyale
>>> >
>>> > -compiler.strict-xml=true
>>> >
>>> > target:SWF
>>> >
>>> > target:JSRoyale
>>> >
>>> > COMPC
>>> >
>>> > Loading configuration:
>>> >
>>> /Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/MXRoyale/target/compile-swf-config.xml
>>> >
>>> >
>>> > Error: Unexpected exception 'java.lang.NullPointerException'.
>>> >
>>> >
>>> >
>>> > Unexpected exception 'java.lang.NullPointerException'.
>>> >
>>> >
>>> > ...
>>> >
>>> > [*INFO*] Apache Royale: Framework: Libs: RoyaleSite .........
>>> *SUCCESS*
>>> > [ 0.771 s]
>>> >
>>> > [*INFO*] Apache Royale: Framework: Libs: MXRoyale ...........
>>> *FAILURE*
>>> > [ 1.529 s]
>>> >
>>> > [*INFO*] Apache Royale: Framework: Libs: Icons ..............
>>> *SKIPPED*
>>> >
>>> > [*INFO*] Apache Royale: Framework: Libs: SparkRoyale ........
>>> *SKIPPED*
>>> >
>>> > I'm trying to build with the 2 commits of the latest failed release
>>> > reverted to build 0.9.4. (I think we should revert those since, I
>>> suppose
>>> > are not valid now).
>>> >
>>> > Thanks
>>> >
>>> >
>>> >
>>> > El mié., 10 oct. 2018 a las 21:41, Alex Harui
>>> (<[email protected]>)
>>> > escribió:
>>> >
>>> >> We especially want the RemoteObject in Network.swc to be PAYG. MX
>>> >> RemoteObject was never PAYG.
>>> >>
>>> >> Having looked at the code more, I see what you are saying about
>>> Operation
>>> >> not having its own fault and result handlers. It looks like
>>> there already
>>> >> is a SimpleOperation, so Operation could introduce its own fault
>>> and result
>>> >> handlers.
>>> >>
>>> >> FWIW, I just pushed the changes to the compiler and emulation
>>> code that
>>> >> got MX RemoteObject to work. So that could be an option for
>>> you. I'm sure
>>> >> there might be bugs remaining to be fixed, but there is quite a
>>> bit of old
>>> >> Flex code that is now running pretty much unchanged.
>>> >>
>>> >> -Alex
>>> >>
>>> >> On 10/10/18, 2:33 AM, "Carlos Rovira" <[email protected]>
>>> wrote:
>>> >>
>>> >> Hi Alex
>>> >>
>>> >> El mar., 9 oct. 2018 a las 18:14, Alex Harui
>>> >> (<[email protected]>)
>>> >> escribió:
>>> >>
>>> >> > As long as Responders are PAYG and not baked into the basic
>>> RO
>>> >> > implementation, it is fine for others to try to replicate
>>> subsets
>>> >> of MX
>>> >> > RemoteObject, but it still seems like duplication of effort.
>>> >> >
>>> >>
>>> >> well, I'm talking not about MX RO, bur the current one we
>>> have in
>>> >> Network.swc that is working.
>>> >>
>>> >> That means is not a duplicate effort, take into account that
>>> I'm
>>> >> right now
>>> >> coding a real world Apache Royale application, and need to
>>> get the
>>> >> work
>>> >> done. I expect this could be a win for this project since is
>>> an
>>> >> important
>>> >> project and an important client that are betting for Apache
>>> Royale :).
>>> >>
>>> >>
>>> >> >
>>> >> > That said, I have not used RO or Responders in any real
>>> world
>>> >> application
>>> >> > myself. I'm not sure I understand the need for them vs
>>> just adding
>>> >> more
>>> >> > listeners to the result and fault event.
>>> >> >
>>> >>
>>> >> Each RO use to have several Operations (aka methods that we
>>> want to
>>> >> call in
>>> >> the backend). In real world scenarios, we want each RO
>>> callback logic
>>> >> will
>>> >> be unique. If I call a service for a user list, I want to
>>> fill the
>>> >> list in
>>> >> royale, but if I want to ask for a concrete user data, I want
>>> to fill
>>> >> a
>>> >> form with that data.
>>> >>
>>> >> Now, all Operations will be throw a result event and therefor
>>> all
>>> >> listeners
>>> >> will fire, executing all methods. With listeners, we can use
>>> >> if-then-else
>>> >> to and some logic to execute parts of the listener, but a
>>> Responder
>>> >> implementation, should make the appropriate responder be
>>> executed.
>>> >>
>>> >> In order to structure and organizar a real world application
>>> that is
>>> >> a bit
>>> >> complex this is needed to separate all this logic across
>>> files.
>>> >> (In a tiny application, you can use the if-then-else approach
>>> since
>>> >> is more
>>> >> like a example).
>>> >>
>>> >>
>>> >>
>>> >> >
>>> >> > My 2 cents,
>>> >> > -Alex
>>> >> >
>>> >> > On 10/9/18, 3:46 AM, "Carlos Rovira" <
>>> [email protected]>
>>> >> wrote:
>>> >> >
>>> >> > Hi Piotr,
>>> >> >
>>> >> > I think if I get some improvement over the current RO
>>> with
>>> >> Responders
>>> >> > that
>>> >> > could go to develop. Other thing is I tried to make it
>>> work in
>>> >> mx RO.
>>> >> > People using Royale RO will benefit from it. If some
>>> day mx RO
>>> >> is
>>> >> > ready, I
>>> >> > think we'll shift to mx RO, although royale RO could be
>>> >> continue to be
>>> >> > valid (since is a small implementation that works), or
>>> we could
>>> >> decide
>>> >> > deprecate it. Anyway, I'm not talking to make
>>> improvements over
>>> >> > something
>>> >> > that others will evolve separately, I want to improve
>>> something
>>> >> that
>>> >> > otherwise will remain as is.
>>> >> >
>>> >> >
>>> >> >
>>> >> > El mar., 9 oct. 2018 a las 12:39, Piotr Zarzycki (<
>>> >> > [email protected]>)
>>> >> > escribió:
>>> >> >
>>> >> > > Carlos,
>>> >> > >
>>> >> > > You can always use branch, make your changes and wait
>>> for the
>>> >> proper
>>> >> > one
>>> >> > > using branch. Some time ago Harbs did it the same as
>>> far as I
>>> >> > remember.
>>> >> > > There is no need to wait if you need something ASAP.
>>> >> > >
>>> >> > > Thanks,
>>> >> > > Piotr
>>> >> > >
>>> >> > > wt., 9 paź 2018 o 12:36 Carlos Rovira <
>>> >> [email protected]>
>>> >> > > napisał(a):
>>> >> > >
>>> >> > > > Hi Alex,
>>> >> > > >
>>> >> > > > since there's no planned ETA for anyone here (that
>>> I know),
>>> >> I
>>> >> > could try
>>> >> > > at
>>> >> > > > some point to have a minimal Responder
>>> functionality in the
>>> >> current
>>> >> > > working
>>> >> > > > RO. Does not have sense to duplicate all the code
>>> but I
>>> >> think has
>>> >> > sense
>>> >> > > to
>>> >> > > > see if some little changes can provide the minimal
>>> needs.
>>> >> > > >
>>> >> > > > thanks
>>> >> > > >
>>> >> > > >
>>> >> > > >
>>> >> > > > El mar., 9 oct. 2018 a las 0:25, Alex Harui
>>> >> > (<[email protected]>)
>>> >> > > > escribió:
>>> >> > > >
>>> >> > > > > I think you'll have to wait until someone gets
>>> all of the
>>> >> old
>>> >> > Flex RO
>>> >> > > > code
>>> >> > > > > to compile and run. I'm currently still
>>> debugging the
>>> >> compiler,
>>> >> > so no
>>> >> > > > way
>>> >> > > > > it will be ready tomorrow.
>>> >> > > > >
>>> >> > > > > It doesn't make sense to try to duplicate all of
>>> this
>>> >> code and
>>> >> > get it
>>> >> > > to
>>> >> > > > > work some other way.
>>> >> > > > >
>>> >> > > > > -Alex
>>> >> > > > >
>>> >> > > > > On 10/8/18, 3:21 PM, "Carlos Rovira" <
>>> >> [email protected]>
>>> >> > wrote:
>>> >> > > > >
>>> >> > > > > Hi Alex,
>>> >> > > > >
>>> >> > > > > I'm closing for today, but tomorrow I'll need
>>> to
>>> >> handle more
>>> >> > than
>>> >> > > one
>>> >> > > > > Responder for RemoteObject calls, so each
>>> >> operation/method
>>> >> > can have
>>> >> > > > > it's
>>> >> > > > > own responder and create methods for each one
>>> in my
>>> >> > controllers.
>>> >> > > with
>>> >> > > > > the
>>> >> > > > > current RemoteObject implementation could you
>>> share
>>> >> what
>>> >> > could be
>>> >> > > the
>>> >> > > > > most
>>> >> > > > > quick and easy way to get this while the full
>>> RO
>>> >> > implementation is
>>> >> > > on
>>> >> > > > > the
>>> >> > > > > works? Now that I'm starting to grow the app
>>> code
>>> >> base I can
>>> >> > rely
>>> >> > > on
>>> >> > > > a
>>> >> > > > > result handler full of if-then-else
>>> >> > > > >
>>> >> > > > > Thanks for any help on this
>>> >> > > > >
>>> >> > > > > Carlos
>>> >> > > > >
>>> >> > > > >
>>> >> > > > >
>>> >> > > > >
>>> >> > > > > El lun., 8 oct. 2018 a las 18:52, Carlos
>>> Rovira (<
>>> >> > > > > [email protected]>)
>>> >> > > > > escribió:
>>> >> > > > >
>>> >> > > > > > Ok Alex, thanks, didn't know that you have
>>> this
>>> >> task to
>>> >> > make it
>>> >> > > > work
>>> >> > > > > RO. I
>>> >> > > > > > though you only try to compile it.
>>> >> > > > > > That's good to know. I'm trying right now
>>> to make a
>>> >> real
>>> >> > world
>>> >> > > app
>>> >> > > > > and
>>> >> > > > > > since I don't have a micro structural IOC
>>> framework
>>> >> like
>>> >> > Swiz,
>>> >> > > that
>>> >> > > > > was
>>> >> > > > > > that I use in Flex, I'm trying to structure
>>> and
>>> >> organize
>>> >> > screens,
>>> >> > > > > > controllers, delegates, and so on, and I'm
>>> trying
>>> >> to put
>>> >> > things
>>> >> > > as
>>> >> > > > > easy as
>>> >> > > > > > possible so I can refactor more later to
>>> something
>>> >> more
>>> >> > suited
>>> >> > > for
>>> >> > > > > this
>>> >> > > > > > task, since I don't have time now to build a
>>> >> framework for
>>> >> > this
>>> >> > > due
>>> >> > > > > to
>>> >> > > > > > reduced time lines.
>>> >> > > > > >
>>> >> > > > > > If you get this RO proxy way to call backend
>>> >> methods and
>>> >> > > > AsyncToken,
>>> >> > > > > > that's what I need to connect with MX
>>> RemoteObject
>>> >> in the
>>> >> > same
>>> >> > > way
>>> >> > > > > we use
>>> >> > > > > > to do.
>>> >> > > > > >
>>> >> > > > > > I'll be waiting for your. progress there
>>> >> > > > > >
>>> >> > > > > > thanks
>>> >> > > > > >
>>> >> > > > > > Carlos
>>> >> > > > > >
>>> >> > > > > >
>>> >> > > > > >
>>> >> > > > > >
>>> >> > > > > >
>>> >> > > > > >
>>> >> > > > > > El lun., 8 oct. 2018 a las 17:28, Alex Harui
>>> >> > > > > (<[email protected]>)
>>> >> > > > > > escribió:
>>> >> > > > > >
>>> >> > > > > >> I believe I already said I am working on
>>> >> RemoteObject.
>>> >> > > > > >>
>>> >> > > > > >> The Flex compiler generates custom code for
>>> >> > mx:RemoteObject.
>>> >> > > The
>>> >> > > > > Royale
>>> >> > > > > >> Compiler currently does not. I am working
>>> on it.
>>> >> > > > > >>
>>> >> > > > > >> Thanks,
>>> >> > > > > >> -Alex
>>> >> > > > > >>
>>> >> > > > > >> On 10/8/18, 3:13 AM, "Carlos Rovira" <
>>> >> > [email protected]>
>>> >> > > > > wrote:
>>> >> > > > > >>
>>> >> > > > > >> Hi,
>>> >> > > > > >>
>>> >> > > > > >> I was experimenting trying to get
>>> RemoteObject
>>> >> to
>>> >> > proxy
>>> >> > > method
>>> >> > > > > calls.
>>> >> > > > > >>
>>> >> > > > > >> so instead of doing
>>> >> > > > > >>
>>> >> > > > > >> service.send("echo", [name_txt.text]);
>>> >> > > > > >>
>>> >> > > > > >> be able to do:
>>> >> > > > > >>
>>> >> > > > > >> service.echo(name_txt.text);
>>> >> > > > > >>
>>> >> > > > > >> I tried with Proxy class
>>> >> > > > > >>
>>> >> > > > > >> (org.apache.royale.utils.Proxy)
>>> >> > > > > >>
>>> >> > > > > >> and implementing IEventDispatcher, but
>>> >> compiler throws
>>> >> > > error:
>>> >> > > > > >>
>>> >> > > > > >> Call to a possibly undefined method
>>> echo
>>> >> through a
>>> >> > reference
>>> >> > > > > with
>>> >> > > > > >> static
>>> >> > > > > >> type RemoteObject.
>>> >> > > > > >>
>>> >> > > > > >> It's possible to do something like
>>> this? what
>>> >> I'm
>>> >> > missing?
>>> >> > > > > >>
>>> >> > > > > >> This seems a little enhancement, but
>>> it would
>>> >> be cool
>>> >> > if we
>>> >> > > > get
>>> >> > > > > it in
>>> >> > > > > >> order
>>> >> > > > > >> to be more near of the normal syntax
>>> we all
>>> >> have in
>>> >> > our code
>>> >> > > > > bases.
>>> >> > > > > >>
>>> >> > > > > >> thanks
>>> >> > > > > >>
>>> >> > > > > >> --
>>> >> > > > > >> Carlos Rovira
>>> >> > > > > >>
>>> >> > > > > >>
>>> >> > > > >
>>> >> > > >
>>> >> > >
>>> >> >
>>> >>
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Ca103dd7253104f55b80908d62f09867d%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636748115311722500&sdata=CfpsY0guxPri3iOWaEhfU6nHhuGQFxHtc%2B6Soj%2BzpqQ%3D&reserved=0
>>> >> > > > > >>
>>> >> > > > > >>
>>> >> > > > > >>
>>> >> > > > > >
>>> >> > > > > > --
>>> >> > > > > > Carlos Rovira
>>> >> > > > > >
>>> >> > > > >
>>> >> > > >
>>> >> > >
>>> >> >
>>> >>
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Ca103dd7253104f55b80908d62f09867d%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636748115311722500&sdata=CfpsY0guxPri3iOWaEhfU6nHhuGQFxHtc%2B6Soj%2BzpqQ%3D&reserved=0
>>> >> > > > > >
>>> >> > > > > >
>>> >> > > > >
>>> >> > > > > --
>>> >> > > > > Carlos Rovira
>>> >> > > > >
>>> >> > > > >
>>> >> > > >
>>> >> > >
>>> >> >
>>> >>
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Ca103dd7253104f55b80908d62f09867d%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636748115311722500&sdata=CfpsY0guxPri3iOWaEhfU6nHhuGQFxHtc%2B6Soj%2BzpqQ%3D&reserved=0
>>> >> > > > >
>>> >> > > > >
>>> >> > > > >
>>> >> > > >
>>> >> > > > --
>>> >> > > > Carlos Rovira
>>> >> > > >
>>> >> >
>>> >>
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Ca103dd7253104f55b80908d62f09867d%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636748115311722500&sdata=CfpsY0guxPri3iOWaEhfU6nHhuGQFxHtc%2B6Soj%2BzpqQ%3D&reserved=0
>>> >> > > >
>>> >> > >
>>> >> > >
>>> >> > > --
>>> >> > >
>>> >> > > Piotr Zarzycki
>>> >> > >
>>> >> > > Patreon: *
>>> >> >
>>> >>
>>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7Ca103dd7253104f55b80908d62f09867d%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636748115311722500&sdata=K6vSJw%2Blkl13yO%2BiFsO7N%2FZsBvoadpPcHUTwmSxK7AM%3D&reserved=0
>>> >> > > <
>>> >> >
>>> >>
>>> https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7Ca103dd7253104f55b80908d62f09867d%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636748115311732505&sdata=UAfPn4xSsprYPhMJCYyKHn%2F85PW6n09XFU5uuC5SHHY%3D&reserved=0
>>> >> > >*
>>> >> > >
>>> >> >
>>> >> >
>>> >> > --
>>> >> > Carlos Rovira
>>> >> >
>>> >> >
>>> >>
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Ca103dd7253104f55b80908d62f09867d%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636748115311732505&sdata=y%2Bctvc4%2F0YE4QdVgDBdK%2BQ7zj4xvUHoe8mWv9Zq%2BmOA%3D&reserved=0
>>> >> >
>>> >> >
>>> >> >
>>> >>
>>> >> --
>>> >> Carlos Rovira
>>> >>
>>> >>
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Ca103dd7253104f55b80908d62f09867d%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636748115311732505&sdata=y%2Bctvc4%2F0YE4QdVgDBdK%2BQ7zj4xvUHoe8mWv9Zq%2BmOA%3D&reserved=0
>>> >>
>>> >>
>>> >>
>>> >
>>> > --
>>> > Carlos Rovira
>>> >
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Ca103dd7253104f55b80908d62f09867d%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636748115311732505&sdata=y%2Bctvc4%2F0YE4QdVgDBdK%2BQ7zj4xvUHoe8mWv9Zq%2BmOA%3D&reserved=0
>>> >
>>> >
>>>
>>> --
>>> Carlos Rovira
>>>
>>> https://na01.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7Ca103dd7253104f55b80908d62f09867d%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C636748115311732505&sdata=y%2Bctvc4%2F0YE4QdVgDBdK%2BQ7zj4xvUHoe8mWv9Zq%2BmOA%3D&reserved=0
>>>
>>>
>>>
>>
>> --
>> Carlos Rovira
>> http://about.me/carlosrovira
>>
>>
>
> --
> Carlos Rovira
> http://about.me/carlosrovira
>
>
--
Carlos Rovira
http://about.me/carlosrovira