Sorry, I wasn't clear. The function itself can go in Basic or better yet, Core, since I don't think it has any dependencies and can be use anywhere. I was just saying that I would prefer if none of the Basic components or UIBase used your new function. You should be able to write a Royale app with Basic and not bring in that function. Not that it isn't useful, but it isn't truly "basic" given that Basic components are supposed to have typeNames.
My 2 cents, -Alex On 2/24/18, 8:17 AM, "Piotr Zarzycki" <piotrzarzyck...@gmail.com> wrote: >I was going to put it somewhere in the Basic, but I can leave it in the >MDL. The className can be undefined in the case where you wanted to add >something to such "undefinded" string you will got: > >"undefined myClass". - I probably cannot escape from that... > >Maybe I'm missing some way. > >2018-02-24 17:00 GMT+01:00 Alex Harui <aha...@adobe.com.invalid>: > >> Looks ok to me. Seems like you don't need COMPILE::JS. It should work >>on >> all platforms. We can have lots of utility functions in >> org.apache.royale.utils. >> >> In terms of optimization (size/performance) a function like this is >> potentially overkill for the Basic set. It is fine for MDL since MDL >>has >> already picked up additional overhead in order to style "everything". >>But >> I subscribe to what I learned from a wise programmer many years ago: If >> you truly understand the problem space, you can often find a smaller, >> faster solution. Like I said, if you know that there "must" be at least >> one string from typenames as the last string, the replacement is much >> easier. All of the extra null checking and trimming in your version is >> not really needed for the specific problem of replacing from a set of >> string you know about that don't need trimming. >> >> My 2 cents, >> -Alex >> >> On 2/24/18, 4:50 AM, "Piotr Zarzycki" <piotrzarzyck...@gmail.com> wrote: >> >> >Alex, >> > >> >I used your suggestion, added some additional things and I end up with >> >following utility [1]. Usage will looks like that: [2]. Do you think it >> >could be part of the framework ? It's working nicely with MDL. >> > >> >[1] >> >https://na01.safelinks.protection.outlook.com/?url= >> https%3A%2F%2Fpaste.apa >> >che.org%2FtsaF&data=02%7C01%7Caharui%40adobe.com% >> 7C91e633a78bea4fc4c89908d >> >57b853bdf%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0% >> 7C636550734524475642& >> >sdata=O%2BZn0ajlM6A2Q0tBEBvDDtZZcNQYNOBsCn1kO0fgdPo%3D&reserved=0 >> >[2] >> >https://na01.safelinks.protection.outlook.com/?url= >> https%3A%2F%2Fpaste.apa >> >che.org%2Fxbfb&data=02%7C01%7Caharui%40adobe.com% >> 7C91e633a78bea4fc4c89908d >> >57b853bdf%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0% >> 7C636550734524475642& >> >sdata=j0n83ksobPZfR0YY7oMBJMU1dzx7fcW%2FNOmLd1S%2BL0o%3D&reserved=0 >> > >> >Thanks, Piotr >> > >> > >> > >> >2018-02-23 21:31 GMT+01:00 Alex Harui <aha...@adobe.com.invalid>: >> > >> >> Well, whether you like it or not, the wrapper is mapping a >> >>space-delimited >> >> list to the array so if you manipulate the array you have to >> >> back-calculate the string. IMO, in HTML, the "class" property is a >> >>string >> >> and people are used to entering a space-delimited list. That's why >>we >> >> have a className property on UIBase. So that folks have something >> >>similar >> >> in MXML. >> >> >> >> So, unfortunately, your problem can't be as simple as manipulating >> >> classList via its APIs. Also consider that the classList API might >> >>itself >> >> be doing a string search in the array. >> >> >> >> If you have the string "Piotr Alex Harbs" and want to replace Alex >>with >> >> Peter and you know that Alex can't be the last item because the last >> >>item >> >> is the typeName which is never null or "", then a simple >>String.replace >> >> call should work. >> >> >> >> className = className.replace(oldName + " ", newName + " "); >> >> >> >> HTH, >> >> -Alex >> >> >> >> On 2/23/18, 12:21 PM, "Piotr Zarzycki" <piotrzarzyck...@gmail.com> >> >>wrote: >> >> >> >> >It's just swapping. If I have following code [1] - it is easier to >> >> >manipulate classList than className which is simple string. What >> >>utility >> >> >could look like ? It would be manipulating strings, which is less >> >> >convenient. >> >> > >> >> >[1] >> >> >https://na01.safelinks.protection.outlook.com/?url= >> >> https%3A%2F%2Fpaste.apa >> >> >che.org%2Fat0H&data=02%7C01%7Caharui%40adobe.com% >> >> 7C061f7278ca3748bfaee408d >> >> >57afb14a9%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0% >> >> 7C636550141162759398& >> >> >sdata=76W6lkZuIxUbO5mDtenl4g88zmRPsHaA1evyvvk7O08%3D&reserved=0 >> >> > >> >> >2018-02-23 21:11 GMT+01:00 Alex Harui <aha...@adobe.com.invalid>: >> >> > >> >> >> Just compiler. No need for asjs changes at this time I think. >> >> >> >> >> >> I'm still unclear on why you need to manipulate classList >>directly. >> >>Is >> >> >> there some code that is in the JS from Material that manipulates >> >> >> classList? Or are you just trying to swap out a name on the >> >>classList? >> >> >> If the latter, why not just create some utility function that >> >>operates >> >> >>on >> >> >> className and not the underlying element? >> >> >> >> >> >> -Aleex >> >> >> >> >> >> On 2/23/18, 11:58 AM, "Piotr Zarzycki" <piotrzarzyck...@gmail.com> >> >> >>wrote: >> >> >> >> >> >> >You did merge vivid compiler changes or also changes from asjs >> >> >>repository. >> >> >> > >> >> >> >As for my work on MDL. I ended up with something like that [1]. >>The >> >> >> >question now how to propagate that code ? This is code for the >> >> >>component >> >> >> >which manipulates classList. Should I create some parent class ? >> >> >>General/ >> >> >> >for MDL only, or Bead which will be included into such classes ? >> >> >> >Theoretically bead could listen for initComplete. >> >> >> > >> >> >> >[1] >> >> >> >https://na01.safelinks.protection.outlook.com/?url= >> >> >> https%3A%2F%2Fpaste.apa >> >> >> >che.org%2F1dy2&data=02%7C01%7Caharui%40adobe.com% >> >> >> 7C8e313e7d7f9d4608759f08d >> >> >> >57af7d477%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0% >> >> >> 7C636550127203173382& >> >> >> >sdata=NkxHZQlHtOeJzWC%2BIyxxst89DlX0CCUa9VeGpztTL2s%3D&reserved=0 >> >> >> > >> >> >> >Thanks, >> >> >> >Piotr >> >> >> > >> >> >> >2018-02-23 20:53 GMT+01:00 Alex Harui <aha...@adobe.com.invalid>: >> >> >> > >> >> >> >> I think I have Maven using the basic.css appropriately. There >>is >> >>no >> >> >>way >> >> >> >> to default to including a SWC in Maven and then not use it in a >> >>child >> >> >> >> project, so all example poms that aren't MDL need to bring in >>the >> >> >> >> BasicTheme. >> >> >> >> >> >> >> >> Also, I had to merge the compiler change from vivid-ui-set >>branch >> >>to >> >> >>get >> >> >> >> the theme SWC to work in Maven. >> >> >> >> >> >> >> >> -Alex >> >> >> >> >> >> >> >> On 2/23/18, 8:04 AM, "Alex Harui" <aha...@adobe.com.INVALID> >> >>wrote: >> >> >> >> >> >> >> >> >MDL does not want the basic.css theme. That is why we are >>moving >> >> >> >>styles >> >> >> >> >from Basic:swc's defaults.css to themes/basic.css. I see that >> >>the >> >> >> >>Maven >> >> >> >> >plugin doesn't allow specification of a theme, so that's >>another >> >> >>task. >> >> >> >> I >> >> >> >> >can do it if nobody wants to take that on. So, yes, move the >> >>Button >> >> >> >> >selectors from defaults.css to basic.css if that helps, but I >> >>will >> >> >>say >> >> >> >> >that I didn't notice those styles taking effect in my local >> >>version >> >> >>of >> >> >> >> >MDLTabsExample and assumed that mdl had overridden those >>styles. >> >> As >> >> >> >> >Carlos said, in the end we want basic.css to be compliant CSS >>so >> >> >>don't >> >> >> >> >move anything with ClassReference as the value without >>discussing >> >> >> >>first. >> >> >> >> > >> >> >> >> >TypeNames should be set after the call to super(). Look at >>Label >> >> >>and >> >> >> >> >MultilineLabel. They are working fine for me. They are being >> >>used >> >> >>in >> >> >> >> >RoyaleStore. There might have been issues before yesterday >> >>because >> >> >> >>lots >> >> >> >> >of Basic components were setting ClassName, but I went and >> >>cleaned >> >> >> >>that up >> >> >> >> >although I could have missed a few. >> >> >> >> > >> >> >> >> >In complex Views, you have two choices: Make a subclass or >> >>assign >> >> >>the >> >> >> >> >className. We should try to set set typeNames. In fact, >>maybe >> >>we >> >> >> >>should >> >> >> >> >make typeNames protected. >> >> >> >> > >> >> >> >> >So, for ComboBoxView, the current code is setting a custom >> >>className >> >> >> >>which >> >> >> >> >is valid. Users can then style it further by adding a >> >> >> >>.ComboBoxTextInput >> >> >> >> >selector to their CSS. However, class selectors are not >>pruned by >> >> >>the >> >> >> >> >compiler. So in other cases, we have created a real subclass >>(in >> >> >>this >> >> >> >> >case "ComboBoxTextInput extends TextInput) and then the CSS >>would >> >> >>not >> >> >> >>have >> >> >> >> >the "." in front so it would look like a type selector and the >> >> >>compiler >> >> >> >> >would prune it from apps that don't use a ComboBox. Not sure >> >>which >> >> >>is >> >> >> >> >better/faster, >> >> >> >> > >> >> >> >> >Regarding Peter's point about Labels in Menus. The issue >>isn't >> >>that >> >> >> >>Flash >> >> >> >> >can't handle it. It is that our SimpleCSSValuesImpl lookup >> >>doesn't >> >> >> >>handle >> >> >> >> >descendant and other advanced selectors. The techniques for >> >> >> >>ComboBoxView >> >> >> >> >is how we avoid requiring a more complex lookup on the SWF >>side. >> >> >>The >> >> >> >>menu >> >> >> >> >code should not be setting typeNames on other things, only >> >>itself. >> >> >>I'm >> >> >> >> >not sure if on the JS side, avoiding descendant selectors >>speeds >> >> >> >>things up >> >> >> >> >in the browser or not. We could create an IValuesImpl with >> >> >>descendant >> >> >> >> >selector support on the SWF side and probably will someday. >> >> >>Volunteers >> >> >> >> >are welcome to take that on. >> >> >> >> > >> >> >> >> >Of course, I could be wrong... >> >> >> >> >-Alex >> >> >> >> > >> >> >> >> > >> >> >> >> >On 2/23/18, 7:37 AM, "Piotr Zarzycki" >><piotrzarzyck...@gmail.com >> > >> >> >> >>wrote: >> >> >> >> > >> >> >> >> >>A bit more on point 1. and let's take for the example simple >> >> >>Button. >> >> >> >>We >> >> >> >> >>have some styles for Button in Basic.css. MDL Button extends >> >> >> >>TextButton - >> >> >> >> >>some styles naturally has been added from default.css. >> >> >> >> >> >> >> >> >> >>If I create theme I should achieve that my theme classes will >> >> >>override >> >> >> >> >>default.css Button styles and I should be good yes ? >> >> >> >> >> >> >> >> >> >>Am I understand it correctly ? >> >> >> >> >>Thanks, Piotr >> >> >> >> >> >> >> >> >> >> >> >> >> >> >>2018-02-23 16:32 GMT+01:00 Piotr Zarzycki >> >> >><piotrzarzyck...@gmail.com >> >> >> >: >> >> >> >> >> >> >> >> >> >>> Alex, >> >> >> >> >>> >> >> >> >> >>> I have started to work on MDL and move all typeNames from >> >> >> >>createElement >> >> >> >> >>>to >> >> >> >> >>> constructor. Unfortunately something is not right here. >> >> >> >> >>> >> >> >> >> >>> 1) I still need to exclude BasicJS.swc:default.css - I did >>add >> >> >> >>theme to >> >> >> >> >>> MaterialDesignLite module maven build - it didn't help. >> >> >> >> >>> 2) If I cannot setup typeNames and classNames inside my >> >> >>component, >> >> >> >>how >> >> >> >> >>>can >> >> >> >> >>> I achieve switching some UI parts of the component ? In MDL >> >>it is >> >> >> >>quite >> >> >> >> >>> common that if I would like to change component I'm adding >>to >> >>it >> >> >>css >> >> >> >> >>>class. >> >> >> >> >>> [1] - This is the example. If I remove line it doesn't >>work. >> >> >>There >> >> >> >>are >> >> >> >> >>> several places in MDL where we are doing such things. It is >> >> >>common >> >> >> >>in >> >> >> >> >>>JS >> >> >> >> >>> world doing such things. >> >> >> >> >>> >> >> >> >> >>> typeNames = element.className; >> >> >> >> >>> >> >> >> >> >>> Thoughts ? >> >> >> >> >>> >> >> >> >> >>> [1] >> >> >> >> >>>https://na01.safelinks.protection.outlook.com/?url= >> >> >> >> https%3A%2F%2Fpaste.a >> >> >> >> >>>p >> >> >> >> >>>ache.org%2Fat0H&data=02%7C01%7Caharui%40adobe.com% >> >> >> >> 7Ca44c142f0ddc455c70bf >> >> >> >> >>>0 >> >> >> >> >>>8d57ad361e6%7Cfa7b1b5a7b34438794aed2c178de >> >> >> >> cee1%7C0%7C0%7C636549970664822 >> >> >> >> >>>4 >> >> >> >> >>>53&sdata=1sSgdfBy%2BAv%2FsFIYwVFFHvVlhtJ3w3TW% >> >> >> >> 2FiDEyPVYGmo%3D&reserved=0 >> >> >> >> >>> >> >> >> >> >>> Thanks, >> >> >> >> >>> Piotr >> >> >> >> >>> >> >> >> >> >>> >> >> >> >> >>> 2018-02-23 15:55 GMT+01:00 Piotr Zarzycki >> >> >> >><piotrzarzyck...@gmail.com>: >> >> >> >> >>> >> >> >> >> >>>> Peter, >> >> >> >> >>>> >> >> >> >> >>>> That is interesting what you are saying. What will happen >> >>then >> >> >>if >> >> >> >>you >> >> >> >> >>>> have class which extends other one. The parent class is >> >>setting >> >> >> >> >>>>typeNames >> >> >> >> >>>> and derived one also before super? The parent one will >> >>override >> >> >>it? >> >> >> >> >>>> >> >> >> >> >>>> I cannot check now how typeNames is implemented. >> >> >> >> >>>> >> >> >> >> >>>> Piotr >> >> >> >> >>>> >> >> >> >> >>>> >> >> >> >> >>>> On Fri, Feb 23, 2018, 15:13 Peter Ent >> >><p...@adobe.com.invalid> >> >> >> >>wrote: >> >> >> >> >>>> >> >> >> >> >>>>> I have been guilty of this and have been using typeNames >> >>now. >> >> >>I've >> >> >> >> >>>>>found >> >> >> >> >>>>> that I need to set typeNames before calling super() in >>the >> >> >> >> >>>>>constructor. I >> >> >> >> >>>>> thought it was done afterwards, but if I set typeNames >>after >> >> >> >>calling >> >> >> >> >>>>> super(), the typeName I set does not show up in the HTML >> >> >>produced. >> >> >> >> >>>>> >> >> >> >> >>>>> Also, suppose I have this: A Menu with a label inside of >>it. >> >> >> >>People >> >> >> >> >>>>>will >> >> >> >> >>>>> want to change the background color of the menu and the >> >>color >> >> >>of >> >> >> >>the >> >> >> >> >>>>> label's text. If I were doing this in plain HTML/JS/CSS, >>I >> >> >>would >> >> >> >>set >> >> >> >> >>>>>a >> >> >> >> >>>>> selector: .Menu .Label { color: blue; } but that's not >> >> >>supported >> >> >> >>in >> >> >> >> >>>>>the >> >> >> >> >>>>> Flash Player. So when I set up the typeName for the label >> >> >>inside >> >> >> >>of >> >> >> >> >>>>>the >> >> >> >> >>>>> Menu should I set it to: Menu_Label or MenuLabel or >> >>Menu-Label? >> >> >> >>And >> >> >> >> >>>>>is >> >> >> >> >>>>> using "." in a selector name a good idea? I would think >>the >> >>CSS >> >> >> >> >>>>>processor >> >> >> >> >>>>> in the browser would be confused between ".x.y" and ".x >>.y" >> >> >>which >> >> >> >>can >> >> >> >> >>>>> also >> >> >> >> >>>>> be written as ".x.y". Basically, we should have a consist >> >> >>naming >> >> >> >> >>>>>pattern >> >> >> >> >>>>> here. >> >> >> >> >>>>> >> >> >> >> >>>>> ‹peter >> >> >> >> >>>>> >> >> >> >> >>>>> On 2/23/18, 4:09 AM, "Gabe Harbs" <harbs.li...@gmail.com> >> >> >>wrote: >> >> >> >> >>>>> >> >> >> >> >>>>> >There¹s some edge cases which seem problematic. One >> >>example: >> >> >> >> >>>>> >ComboBoxBiew has the following: >> >> >> >> >>>>> > input = new TextInput(); >> >> >> >> >>>>> > input.className = "ComboBoxTextInput"; >> >> >> >> >>>>> > >> >> >> >> >>>>> > button = new TextButton(); >> >> >> >> >>>>> > button.className = >> >> >> >> >>>>> >"opt_org-apache.royale-html-ComboBox_Button"; >> >> >> >> >>>>> > >> >> >> >> >>>>> >Input and button are both external to the view class, >>but >> >>are >> >> >> >> >>>>>managed by >> >> >> >> >>>>> >the view class. On the other hand, there is a chance >>that >> >>the >> >> >> >>user >> >> >> >> >>>>>might >> >> >> >> >>>>> >wan to style them. I¹m not sure whether className or >> >> >>typeNames is >> >> >> >> >>>>>more >> >> >> >> >>>>> >appropriate hereŠ >> >> >> >> >>>>> > >> >> >> >> >>>>> >Harbs >> >> >> >> >>>>> > >> >> >> >> >>>>> >> On Feb 23, 2018, at 11:03 AM, Gabe Harbs >> >> >> >><harbs.li...@gmail.com> >> >> >> >> >>>>> wrote: >> >> >> >> >>>>> >> >> >> >> >> >>>>> >> I¹ll help. >> >> >> >> >>>>> >> >> >> >> >> >>>>> >>> On Feb 23, 2018, at 10:50 AM, Alex Harui >> >> >> >> >>>>><aha...@adobe.com.INVALID> >> >> >> >> >>>>> >>>wrote: >> >> >> >> >>>>> >>> >> >> >> >> >>>>> >>> Quick note before I shut down for the night. >> >> >> >> >>>>> >>> >> >> >> >> >>>>> >>> UIBase has both a typeNames and className property. >> >> >> >>TypeNames is >> >> >> >> >>>>> used >> >> >> >> >>>>> >>>to >> >> >> >> >>>>> >>> emulate Flex-like type selectors in the CSS lookup. >>It >> >> >> >>should be >> >> >> >> >>>>>set >> >> >> >> >>>>> >>>in >> >> >> >> >>>>> >>> the constructor and never set from outside the class. >> >> >>There >> >> >> >>are >> >> >> >> >>>>>a >> >> >> >> >>>>> few >> >> >> >> >>>>> >>> classes in Basic and lots of classes in MDL that >>should >> >>be >> >> >> >> >>>>>upgraded >> >> >> >> >>>>> to >> >> >> >> >>>>> >>>set >> >> >> >> >>>>> >>> typeNames in the constructor. Subclasses can append >>to >> >>the >> >> >> >>base >> >> >> >> >>>>> >>>class's >> >> >> >> >>>>> >>> typeNames >> >> >> >> >>>>> >>> >> >> >> >> >>>>> >>> className is the opposite. It should never be set >> >>inside >> >> >>the >> >> >> >> >>>>> >>>component's >> >> >> >> >>>>> >>> class. It is for users of that component to set >>styles >> >>on >> >> >>the >> >> >> >> >>>>> >>>component. >> >> >> >> >>>>> >>> >> >> >> >> >>>>> >>> Can we get a volunteer to clean this up? >> >> >> >> >>>>> >>> >> >> >> >> >>>>> >>> Thanks, >> >> >> >> >>>>> >>> -Alex >> >> >> >> >>>>> >>> >> >> >> >> >>>>> >> >> >> >> >> >>>>> > >> >> >> >> >>>>> >> >> >> >> >>>>> >> >> >> >> >>> >> >> >> >> >>> >> >> >> >> >>> -- >> >> >> >> >>> >> >> >> >> >>> Piotr Zarzycki >> >> >> >> >>> >> >> >> >> >>> Patreon: >> >> >> >> >>>*https://na01.safelinks.protection.outlook.com/?url= >> >> >> >> https%3A%2F%2Fwww.pa >> >> >> >> >>>t >> >> >> >> >>>reon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com >> >> >> >> %7Ca44c142f0dd >> >> >> >> >>>c >> >> >> >> >>>455c70bf08d57ad361e6%7Cfa7b1b5a7b34438794aed2c178de >> >> >> >> cee1%7C0%7C0%7C636549 >> >> >> >> >>>9 >> >> >> >> >>>70664822453&sdata=RxqP6b0L0BmWiiX3t6QdtbiA3YwoJR >> >> >> >> FFjSWC8LaxmWI%3D&reserve >> >> >> >> >>>d >> >> >> >> >>>=0 >> >> >> >> >>> >> >> >> >> >>><https://na01.safelinks.protection.outlook.com/?url= >> >> >> >> https%3A%2F%2Fwww.pa >> >> >> >> >>>t >> >> >> >> >>>reon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com >> >> >> >> %7Ca44c142f0dd >> >> >> >> >>>c >> >> >> >> >>>455c70bf08d57ad361e6%7Cfa7b1b5a7b34438794aed2c178de >> >> >> >> cee1%7C0%7C0%7C636549 >> >> >> >> >>>9 >> >> >> >> >>>70664822453&sdata=RxqP6b0L0BmWiiX3t6QdtbiA3YwoJR >> >> >> >> FFjSWC8LaxmWI%3D&reserve >> >> >> >> >>>d >> >> >> >> >>>=0>* >> >> >> >> >>> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >>-- >> >> >> >> >> >> >> >> >> >>Piotr Zarzycki >> >> >> >> >> >> >> >> >> >>Patreon: >> >> >> >> >>*https://na01.safelinks.protection.outlook.com/?url= >> >> >> >> https%3A%2F%2Fwww.pat >> >> >> >> >>r >> >> >> >> >>eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com >> >> >> >> %7Ca44c142f0ddc4 >> >> >> >> >>5 >> >> >> >> >>5c70bf08d57ad361e6%7Cfa7b1b5a7b34438794aed2c178de >> >> >> >> cee1%7C0%7C0%7C636549970 >> >> >> >> >>6 >> >> >> >> >> >> >> >>>>64822453&sdata=RxqP6b0L0BmWiiX3t6QdtbiA3YwoJR >> >> >> FFjSWC8LaxmWI%3D&reserved= >> >> >> >>>>0 >> >> >> >> >><https://na01.safelinks.protection.outlook.com/?url= >> >> >> >> https%3A%2F%2Fwww.pat >> >> >> >> >>r >> >> >> >> >>eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com >> >> >> >> %7Ca44c142f0ddc4 >> >> >> >> >>5 >> >> >> >> >>5c70bf08d57ad361e6%7Cfa7b1b5a7b34438794aed2c178de >> >> >> >> cee1%7C0%7C0%7C636549970 >> >> >> >> >>6 >> >> >> >> >>64822453&sdata=RxqP6b0L0BmWiiX3t6QdtbiA3YwoJR >> >> >> >> FFjSWC8LaxmWI%3D&reserved=0> >> >> >> >> >>* >> >> >> >> > >> >> >> >> >> >> >> >> >> >> >> > >> >> >> > >> >> >> >-- >> >> >> > >> >> >> >Piotr Zarzycki >> >> >> > >> >> >> >Patreon: >> >> >> >*https://na01.safelinks.protection.outlook.com/?url= >> >> >> https%3A%2F%2Fwww.patr >> >> >> >eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com% >> >> >> 7C8e313e7d7f9d46 >> >> >> >08759f08d57af7d477%7Cfa7b1b5a7b34438794aed2c178de >> >> >> cee1%7C0%7C0%7C6365501272 >> >> >> >> >> >>>03173382&sdata=CTWhfUy0ILGvvx3HwRbmnkSZ3Nf5ay >> >> lHwldhGDulDOE%3D&reserved=0 >> >> >> ><https://na01.safelinks.protection.outlook.com/?url= >> >> >> https%3A%2F%2Fwww.patr >> >> >> >eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com% >> >> >> 7C8e313e7d7f9d46 >> >> >> >08759f08d57af7d477%7Cfa7b1b5a7b34438794aed2c178de >> >> >> cee1%7C0%7C0%7C6365501272 >> >> >> >03173382&sdata=CTWhfUy0ILGvvx3HwRbmnkSZ3Nf5ay >> >> >> lHwldhGDulDOE%3D&reserved=0>* >> >> >> >> >> >> >> >> > >> >> > >> >> >-- >> >> > >> >> >Piotr Zarzycki >> >> > >> >> >Patreon: >> >> >*https://na01.safelinks.protection.outlook.com/?url= >> >> https%3A%2F%2Fwww.patr >> >> >eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com% >> >> 7C061f7278ca3748 >> >> >bfaee408d57afb14a9%7Cfa7b1b5a7b34438794aed2c178de >> >> cee1%7C0%7C0%7C6365501411 >> >> >> >>>62759398&sdata=rpVtPRF2nJb03vSLEIQiK0K3uzGMs6 >> 6vbTZtOxsVXKs%3D&reserved=0 >> >> ><https://na01.safelinks.protection.outlook.com/?url= >> >> https%3A%2F%2Fwww.patr >> >> >eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com% >> >> 7C061f7278ca3748 >> >> >bfaee408d57afb14a9%7Cfa7b1b5a7b34438794aed2c178de >> >> cee1%7C0%7C0%7C6365501411 >> >> >62759398&sdata=rpVtPRF2nJb03vSLEIQiK0K3uzGMs6 >> >> 6vbTZtOxsVXKs%3D&reserved=0>* >> >> >> >> >> > >> > >> >-- >> > >> >Piotr Zarzycki >> > >> >Patreon: >> >*https://na01.safelinks.protection.outlook.com/?url= >> https%3A%2F%2Fwww.patr >> >eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com% >> 7C91e633a78bea4f >> >c4c89908d57b853bdf%7Cfa7b1b5a7b34438794aed2c178de >> cee1%7C0%7C0%7C6365507345 >> >24475642&sdata=dG08yDIsBZVQ1XNIJIjCCqFgQwgmNQ >> HJQSQ7ds5O%2F38%3D&reserved=0 >> ><https://na01.safelinks.protection.outlook.com/?url= >> https%3A%2F%2Fwww.patr >> >eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com% >> 7C91e633a78bea4f >> >c4c89908d57b853bdf%7Cfa7b1b5a7b34438794aed2c178de >> cee1%7C0%7C0%7C6365507345 >> >24475642&sdata=dG08yDIsBZVQ1XNIJIjCCqFgQwgmNQ >> HJQSQ7ds5O%2F38%3D&reserved=0 >> >>* >> >> > > >-- > >Piotr Zarzycki > >Patreon: >*https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patr >eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C0c4af859745d4f >1e55fb08d57ba22da3%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6365508588 >36682085&sdata=vcTmV4sMSk3ZfhGCKd4mX6%2ByAb8saVYLysyZnCX%2FV8M%3D&reserved >=0 ><https://na01.safelinks.protection.outlook.com/?url=https%3A%2F%2Fwww.patr >eon.com%2Fpiotrzarzycki&data=02%7C01%7Caharui%40adobe.com%7C0c4af859745d4f >1e55fb08d57ba22da3%7Cfa7b1b5a7b34438794aed2c178decee1%7C0%7C0%7C6365508588 >36682085&sdata=vcTmV4sMSk3ZfhGCKd4mX6%2ByAb8saVYLysyZnCX%2FV8M%3D&reserved >=0>*