Never mind. I see the problem.
> On Dec 24, 2019, at 12:16 PM, Harbs <[email protected]> wrote:
>
> Please try with my latest changes.
>
> I think I fixed it.
>
>
>> On Dec 24, 2019, at 12:03 PM, Carlos Rovira <[email protected]> wrote:
>>
>> Hi Harbs,
>>
>> the problem seems to affect the Basic DataGrid if you check DataGridExample
>> you can see the error too.
>>
>> In CruxGitHubCommitLogViewer the problem is:
>>
>> Activating JSStageEvents
>> [WARNING] getStaticConstantsByConvention :: the reflection target
>> mx.rpc.http.mxml.HTTPService was not Compiled with default initializers
>> enabled
>> InjectProcessor set up [Inject( "configuratorService" )] on Bean{ source:
>> [object Object], name: configurationDelegate }
>> InjectProcessor set up [Inject] on Bean{ source: [object Object], name:
>> configurationController }
>> getProject executing in ConfigurationController via PostConstruct processing
>> InjectProcessor set up [Inject( "commitsService" )] on Bean{ source:
>> [object Object], name: commitsDelegate }
>> InjectProcessor set up [Inject] on Bean{ source: [object Object], name:
>> commitsController }
>> InjectProcessor set up [Inject] on Bean{ source: [object Object], name:
>> commitsController }
>> RangeError: Maximum call stack size exceeded
>> at Array.concat (<anonymous>)
>> at crux.view.MainContent.goog.events.EventTarget.fireListeners
>> (/Users/carlosrovira/Dev/Royale/Source/royale-asjs/examples/crux/CruxGitHubCommitLogViewer/target/javascript/bin/js-debug/library/closure/goog/events/eventtarget.js:271:34)
>> at Function.goog.events.EventTarget.dispatchEventInternal_
>> (/Users/carlosrovira/Dev/Royale/Source/royale-asjs/examples/crux/CruxGitHubCommitLogViewer/target/javascript/bin/js-debug/library/closure/goog/events/eventtarget.js:372:27)
>> at
>> org.apache.royale.html.DataGridButtonBar.goog.events.EventTarget.dispatchEvent
>> (/Users/carlosrovira/Dev/Royale/Source/royale-asjs/examples/crux/CruxGitHubCommitLogViewer/target/javascript/bin/js-debug/library/closure/goog/events/eventtarget.js:196:35)
>> at
>> org.apache.royale.html.DataGridButtonBar.org.apache.royale.events.EventDispatcher.dispatchEvent
>> (/Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Core/src/main/royale/org/apache/royale/events/EventDispatcher.as:94:32)
>> at
>> org.apache.royale.html.DataGridButtonBar.org.apache.royale.core.ElementWrapper.dispatchEvent
>> (/Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Core/src/main/royale/org/apache/royale/core/ElementWrapper.as:370:44)
>> at org.apache.royale.express.beads.layouts.DataGridLayout.layout
>> (/Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Express/src/main/royale/org/apache/royale/express/beads/layouts/DataGridLayout.as:225:11)
>> at
>> org.apache.royale.express.beads.layouts.DataGridLayout.org_apache_royale_express_beads_layouts_DataGridLayout_handleLayoutNeeded
>> (/Users/carlosrovira/Dev/Royale/Source/royale-asjs/frameworks/projects/Express/src/main/royale/org/apache/royale/express/beads/layouts/DataGridLayout.as:105:4)
>> at
>> org.apache.royale.express.DataGrid.goog.events.EventTarget.fireListeners
>> (/Users/carlosrovira/Dev/Royale/Source/royale-asjs/examples/crux/CruxGitHubCommitLogViewer/target/javascript/bin/js-debug/library/closure/goog/events/eventtarget.js:284:24)
>> at Function.goog.events.EventTarget.dispatchEventInternal_
>> (/Users/carlosrovira/Dev/Royale/Source/royale-asjs/examples/crux/CruxGitHubCommitLogViewer/target/javascript/bin/js-debug/library/closure/goog/events/eventtarget.js:389:27)
>> InjectProcessor set up [Inject( source="commitsController.commits.commits",
>> bind="true" )] on Bean{ source: [object Object], name: null }
>> InjectProcessor set up [Inject( source="configurationController.project",
>> bind="true" )] on Bean{ source: [object Object], name: null }
>>
>>
>> El mar., 24 dic. 2019 a las 10:33, Carlos Rovira (<[email protected]>)
>> escribió:
>>
>>> Hi Harbs,
>>>
>>> thanks for taking the time to look into this and sorry for my delay in
>>> response, as Piotr exposed I'm as well on Christmas time here in Spain, so
>>> with few time, although hope to be around here from in some slices of time.
>>>
>>> About the problem, I built all and check all Crux examples:
>>>
>>>
>>> - examples/crux/CruxQuickStart -> This is now working ok
>>> - examples/crux/CruxQuickStartBasic -> This is now working ok
>>> - examples/crux/CruxGitHubCommitLogViewer -> This is not working, not
>>> retrieve the GitHub data and even the DataGrid seems to be not laying the
>>> header right. Can you take a look at this one, maybe something was missing
>>> for make this working again.
>>>
>>>
>>> I saw 2 test failing, but just see you fixed right now so I'll try to
>>> rebuild again to check that part.
>>>
>>> Anyway good work! :)
>>>
>>> Carlos
>>>
>>>
>>>
>>> El mar., 24 dic. 2019 a las 9:10, Harbs (<[email protected]>)
>>> escribió:
>>>
>>>> I realized that the reason bubbling is not working is because
>>>> EventTarget.getParentEventTarget() is relying on parentEventTarget_ which
>>>> is generally not set in Royale.
>>>>
>>>> Royale already has a parent getter for objects which have hierarchy. I
>>>> changed the method to simply return the parent instead of
>>>> parentEventTarget_ which will be null if there is no parent or its not an
>>>> IChild.
>>>>
>>>> Ideally, the change should be in the EventTarget code, but I’m not trying
>>>> to touch that. I overrode the the method in EventDispatcher. If the event
>>>> does not have bubbling set to true, none of this should effect anything. If
>>>> there are any apps which have bubbling events and are relying on Royale
>>>> bubbling to be broken, they might break with this change… ;-)
>>>>
>>>> Royale should now support event bubbling out of the box. :-)
>>>>
>>>> Harbs
>>>>
>>>>> On Dec 24, 2019, at 9:01 AM, Alex Harui <[email protected]>
>>>> wrote:
>>>>>
>>>>> I took a peek at the commit and made some comments on the commit thread
>>>> that may help.
>>>>>
>>>>> HTH,
>>>>> -Alex
>>>>>
>>>>> On 12/23/19, 2:24 PM, "Harbs" <[email protected] <mailto:
>>>> [email protected]>> wrote:
>>>>>
>>>>> I read through what you did in JSStageEvents. That’s really quite
>>>> ingenious. Well done! :-)
>>>>>
>>>>> I think we could use a similar approach for an application bead to
>>>> support full event bubbling without modifying ElementWrapper and
>>>> HTMLElementWrapper.
>>>>>
>>>>> I still have no idea what broke though.
>>>>>
>>>>> Let me know if I should revert the changes until someone has the
>>>> time to look at this.
>>>>>
>>>>> Thanks,
>>>>> Harbs
>>>>>> On Dec 23, 2019, at 10:59 PM, Greg Dove <[email protected]> wrote:
>>>>>>
>>>>>> Iirc it was dispatching capture phase events that was 'difficult'. I
>>>> think
>>>>>> I had to override something and undo something in Royale that was
>>>> switching
>>>>>> off goog support for that. It was only needed in the JSStageEvents
>>>>>> emulation stuff iirc. I have no idea what the issue is, but that is
>>>>>> probably what I would look at first. Have to go now... I can look at
>>>> this
>>>>>> if needed but not for a few days.
>>>>>>
>>>>>> On Tue, 24 Dec 2019, 09:38 Harbs, <[email protected]> wrote:
>>>>>>
>>>>>>> AIUI, for bubbling to work automatically, setParentEventTarget needs
>>>> to be
>>>>>>> called to construct the hierarchy.
>>>>>>>
>>>>>>> Maybe we should have a bead that takes care of this (on addedToParent
>>>> or
>>>>>>> something) for applications which rely on bubbling for
>>>> non-browser-native
>>>>>>> events.
>>>>>>>
>>>>>>> There is a dispatchBubblingEvent in HTMLElementWrapper which forces
>>>> the
>>>>>>> event to bubble up for all events, but it’s JS only. We could add a
>>>> method
>>>>>>> for SWF for compatibility.
>>>>>>>
>>>>>>> I just tested dispatchBubblingEvent and that makes the alert appear.
>>>>>>>
>>>>>>> None of this explains why it worked before my change, though...
>>>>>>>
>>>>>>>> On Dec 23, 2019, at 10:17 PM, Greg Dove <[email protected]> wrote:
>>>>>>>>
>>>>>>>> Harbs, I can only check Crux in 4-5 days time.
>>>>>>>> From memory I did set up something specific to make either capture or
>>>>>>>> bubbling work, maybe that was for the 'addedToStage' event
>>>> emulation. I
>>>>>>>> think one of them (either capture or bubbling) was not working by
>>>>>>> default,
>>>>>>>> or did was not easy to enable by default.
>>>>>>>>
>>>>>>>>
>>>>>>>>
>>>>>>>> On Tue, Dec 24, 2019 at 9:13 AM Harbs <[email protected]> wrote:
>>>>>>>>
>>>>>>>>> Nope. Didn’t figure it out.
>>>>>>>>>
>>>>>>>>> It looks like Crux listens on the ancestor and is relying on
>>>> bubbling.
>>>>>>>>>
>>>>>>>>> I’m guessing bubbling is not working, but I have no idea why that
>>>> would
>>>>>>>>> have changed with my commit.
>>>>>>>>>
>>>>>>>>>> On Dec 23, 2019, at 10:06 PM, Piotr Zarzycki <
>>>>>>> [email protected]>
>>>>>>>>> wrote:
>>>>>>>>>>
>>>>>>>>>> Harbs,
>>>>>>>>>>
>>>>>>>>>> I feel like Carlos has started his Christmas time ;) I'm glad that
>>>> you
>>>>>>>>>> figured it out! :)
>>>>>>>>>>
>>>>>>>>>> pon., 23 gru 2019 o 21:01 Harbs <[email protected] <mailto:
>>>>>>>>> [email protected]>> napisał(a):
>>>>>>>>>>
>>>>>>>>>>> The asconfig file did not include the necessary metadata. Fixed
>>>> that…
>>>>>>>>>>>
>>>>>>>>>>> OK. I’m not getting any errors, but UserForm is dispatching an
>>>> event
>>>>>>> not
>>>>>>>>>>> listened to by anyone.
>>>>>>>>>>>
>>>>>>>>>>> Where is the listener supposed to be attached? Maybe it’s
>>>> listening to
>>>>>>>>> the
>>>>>>>>>>> wrong object?
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>> On Dec 23, 2019, at 9:35 PM, Harbs <[email protected]>
>>>> wrote:
>>>>>>>>>>>>
>>>>>>>>>>>> I’m getting an error that UserForm.user is null.
>>>>>>>>>>>>
>>>>>>>>>>>> I have no idea where that should have been set, and I have no
>>>> idea
>>>>>>> how
>>>>>>>>>>> my commit could have possibly effected that. I don’t see anything
>>>> that
>>>>>>>>>>> would initialize the user variable.
>>>>>>>>>>>>
>>>>>>>>>>>> If you want my help on this, I’m going to need some direction.
>>>>>>>>>>>>
>>>>>>>>>>>> Thanks,
>>>>>>>>>>>> Harbs
>>>>>>>>>>>>
>>>>>>>>>>>>> On Dec 23, 2019, at 9:28 PM, Harbs <[email protected]
>>>> <mailto:
>>>>>>>>> [email protected]> <mailto:
>>>>>>>>>>> [email protected] <mailto:[email protected]>>> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>> I fixed this, but I have no idea what Crux is supposed to do.
>>>>>>>>>>>>>
>>>>>>>>>>>>> What am I looking for?
>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Dec 23, 2019, at 8:30 PM, Harbs <[email protected]
>>>> <mailto:
>>>>>>>>> [email protected]> <mailto:
>>>>>>>>>>> [email protected] <mailto:[email protected]>>> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I can’t compile Jewel right now.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> I’m getting an error:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> [java]
>>>>>>>>>>>
>>>>>>>>>
>>>>>>>
>>>> /Apache/royale-asjs/frameworks/projects/Jewel/src/main/royale/org/apache/royale/jewel/IconButton.as(104):
>>>>>>>>>>> col: 13 Access of possibly undefined property classSelectorList.
>>>>>>>>>>>>>> [java]
>>>>>>>>>>>>>> [java] classSelectorList.toggle("icon", (_icon !=
>>>>>>>>>>> null));
>>>>>>>>>>>>>> [java] ^
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Dec 23, 2019, at 7:17 PM, Carlos Rovira <
>>>>>>> [email protected]
>>>>>>>>> <mailto:[email protected]>
>>>>>>>>>>> <mailto:[email protected] <mailto:[email protected]
>>>>>>>
>>>>>>>>> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Compilation is ok. The problem is that example is not really
>>>>>>>>> working.
>>>>>>>>>>>>>>> In that example you should be able to fill the form and push
>>>> the
>>>>>>>>>>> button.
>>>>>>>>>>>>>>> After that a JS Alert should be show with the ID of the user
>>>>>>> record
>>>>>>>>>>> saved.
>>>>>>>>>>>>>>> That Alert is not show anymore.
>>>>>>>>>>>>>>> If you revert locally that commit and recompile Core and then
>>>> the
>>>>>>>>>>> example
>>>>>>>>>>>>>>> and run you'll be able to see it again.
>>>>>>>>>>>>>>> We have a client complaining about the app stopped to work
>>>> today
>>>>>>>>>>> since they
>>>>>>>>>>>>>>> are using Crux.
>>>>>>>>>>>>>>> After investigation I was able to trace the problem to that
>>>>>>> commit.
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Thanks
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Carlos
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> El lun., 23 dic. 2019 a las 17:59, Harbs (<
>>>> [email protected]
>>>>>>>>> <mailto:[email protected]>
>>>>>>>>>>> <mailto:[email protected] <mailto:[email protected]>>>)
>>>>>>>>> escribió:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> I compiled CruxQuickStartBasic and I don’t see anything
>>>> wrong.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Can you give me more clues?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> FWIW, I used Ant, is the problem specific to Maven?
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Dec 23, 2019, at 6:26 PM, Carlos Rovira <
>>>>>>>>> [email protected] <mailto:[email protected]>
>>>>>>>>>>> <mailto:[email protected] <mailto:[email protected]
>>>>>>>
>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Hi Harbs,
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> seems recent changes break Crux library
>>>>>>>>>>>>>>>>> (commit: f50c9990a3190cf681364905525656984ab2e9c5 - Cleaned
>>>> up
>>>>>>>>>>>>>>>>> ElementWrapper and HTMLElementWrapper)
>>>>>>>>>>>>>>>>> I'm trying to see what could be the problem. I suppose that
>>>> is
>>>>>>> the
>>>>>>>>>>> change
>>>>>>>>>>>>>>>>> of HTMLElementWrapper now extending ElementWrapper.
>>>>>>>>>>>>>>>>> Tried to change one for the other in Crux library, but with
>>>> no
>>>>>>>>> luck
>>>>>>>>>>>>>>>>> I'm using /examples/crux/CruxQuickStartBasic to test
>>>>>>>>>>>>>>>>> Can you see what could be wrong?
>>>>>>>>>>>>>>>>> Thanks
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> Carlos
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> El dom., 22 dic. 2019 a las 17:24, Harbs (<
>>>>>>> [email protected]
>>>>>>>>> <mailto:[email protected]>
>>>>>>>>>>> <mailto:[email protected] <mailto:[email protected]>>>)
>>>>>>>>>>>>>>>> escribió:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> There is lots of what looks like shared code, so could
>>>>>>>>>>>>>>>>>> HTMLElementWrapper extend ElementWrapper?
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Totally. Excellent idea.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> On Dec 22, 2019, at 5:46 PM, Alex Harui
>>>>>>>>> <[email protected] <mailto:[email protected]>
>>>>>>>>>>> <mailto:[email protected] <mailto:[email protected]
>>>>>>>
>>>>>>>>>>>>>>>>>> wrote:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> In a quick look at history, HTMLElementWrapper's override
>>>>>>> logic
>>>>>>>>>>> was the
>>>>>>>>>>>>>>>>>> same as ElementWrapper's.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Maybe as you upgraded HTMLElementWrapper's logic,
>>>>>>> ElementWrapper
>>>>>>>>>>> should
>>>>>>>>>>>>>>>>>> have changed as well but didn't?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> There is lots of what looks like shared code, so could
>>>>>>>>>>>>>>>>>> HTMLElementWrapper extend ElementWrapper?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> My 2 cents,
>>>>>>>>>>>>>>>>>>> -Alex
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> On 12/22/19, 1:00 AM, "Harbs" <[email protected]
>>>>>>> <mailto:
>>>>>>>>> [email protected]> <mailto:
>>>>>>>>>>> [email protected] <mailto:[email protected]>>> wrote:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> We found a weird bug with events and currentTarget.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> I traced the problem to the following:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> The app loads both HTMLElementWrapper and ElementWrapper.
>>>> The
>>>>>>>>>>> lstener
>>>>>>>>>>>>>>>>>> overrides in the two are stepping on each other. Here’s
>>>> what
>>>>>>>>>>> happens:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> 1. HTMLElementWrapper is loaded first. It replaces
>>>>>>>>>>>>>>>>>> goog.events.fireListener with its fireListenerOverride
>>>> function
>>>>>>>>>>> (which
>>>>>>>>>>>>>>>>>> calls the existing one when it’s done).
>>>>>>>>>>>>>>>>>>> 2. ElementWrapper is loaded next and it replaces the
>>>> existing
>>>>>>>>>>>>>>>>>> goog.events.fireListener function — which was already
>>>> changed
>>>>>>> to
>>>>>>>>>>> point
>>>>>>>>>>>>>>>> to
>>>>>>>>>>>>>>>>>> HTMLElementWrapper.fireListenerOverride with the one from
>>>>>>>>>>>>>>>> ElementWrapper.
>>>>>>>>>>>>>>>>>>> 3. When an event is actually dispatched,
>>>>>>>>>>>>>>>>>> ElementWrapper.fireListenerOverride first changes the
>>>> event to
>>>>>>> a
>>>>>>>>>>> royale
>>>>>>>>>>>>>>>>>> BrowserEvent instead of a goog one.
>>>>>>>>>>>>>>>> HTMLElementWrapper.fireListenerOverride
>>>>>>>>>>>>>>>>>> is then called and where it expects a goog BrowserEvent,
>>>> it in
>>>>>>>>> fact
>>>>>>>>>>>>>>>> gets a
>>>>>>>>>>>>>>>>>> royale BrowserEvent. This causes the wrappedEvent to be the
>>>>>>> wrong
>>>>>>>>>>> type
>>>>>>>>>>>>>>>> and
>>>>>>>>>>>>>>>>>> messes things up down the line.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> I’m not sure of the best way to fix this.
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> * We could check the event type in
>>>>>>>>>>> HTMLElementWrapper/ElementWrapper,
>>>>>>>>>>>>>>>>>> but that’s just-in-case code.
>>>>>>>>>>>>>>>>>>> * I’m not completely sure why we need this logic in both
>>>>>>>>>>>>>>>>>> ElementWrapper and HTMLElementWrapper. Is there something
>>>> that
>>>>>>>>> can
>>>>>>>>>>> be
>>>>>>>>>>>>>>>>>> changed there?
>>>>>>>>>>>>>>>>>>> * Maybe there’s some way for ElementWrapper to know that
>>>> some
>>>>>>>>>>> other
>>>>>>>>>>>>>>>>>> class is installing an override?
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Thoughts?
>>>>>>>>>>>>>>>>>>> Harbs
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>> Carlos Rovira
>>>>>>>>>>>>>>>>>
>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0
>>>> <
>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0
>>>>> <
>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0
>>>> <
>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0>>
>>>> <
>>>>>>>>>
>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0
>>>> <
>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0>
>>>> <
>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0
>>>> <
>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0
>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>> Carlos Rovira
>>>>>>>>>>>>>>>
>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0
>>>> <
>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0>
>>>> <
>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0
>>>> <
>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0>>
>>>> <
>>>>>>>>>
>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0
>>>> <
>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0>
>>>> <
>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0
>>>> <
>>>> https://nam04.safelinks.protection.outlook.com/?url=http%3A%2F%2Fabout.me%2Fcarlosrovira&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=hmBF55kTuMIA8RLzZFSbfaSzdNgoxr8n0gwlVkfv5jI%3D&reserved=0
>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>>
>>>>>>>>>> Piotr Zarzycki
>>>>>>>>>>
>>>>>>>>>> Patreon: *
>>>> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=BPJwWOdHi1NDnDQ7vujOyeQNUInTpQDUQ%2FQ0isRcamc%3D&reserved=0
>>>> <
>>>> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852977541&sdata=BPJwWOdHi1NDnDQ7vujOyeQNUInTpQDUQ%2FQ0isRcamc%3D&reserved=0>
>>>> <
>>>>>>>>>
>>>> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852987537&sdata=abJP9qz96wpalZO2LidV9yth27gCABvHahThSnn%2FHxw%3D&reserved=0
>>>> <
>>>> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852987537&sdata=abJP9qz96wpalZO2LidV9yth27gCABvHahThSnn%2FHxw%3D&reserved=0
>>>>>>
>>>>>>>>>> <
>>>> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852987537&sdata=abJP9qz96wpalZO2LidV9yth27gCABvHahThSnn%2FHxw%3D&reserved=0
>>>> <
>>>> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852987537&sdata=abJP9qz96wpalZO2LidV9yth27gCABvHahThSnn%2FHxw%3D&reserved=0>
>>>> <
>>>>>>>>>
>>>> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852987537&sdata=abJP9qz96wpalZO2LidV9yth27gCABvHahThSnn%2FHxw%3D&reserved=0
>>>> <
>>>> https://nam04.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patreon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C8fe1fe12a45c4547a87708d787f6e8e5%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C637127366852987537&sdata=abJP9qz96wpalZO2LidV9yth27gCABvHahThSnn%2FHxw%3D&reserved=0
>>>>>>> *
>>>>
>>>>
>>>
>>> --
>>> Carlos Rovira
>>> http://about.me/carlosrovira
>>>
>>>
>>
>> --
>> Carlos Rovira
>> http://about.me/carlosrovira
>