User:Andrew Linden/Office Hours/2008 03 11

From Second Life Wiki
< User:Andrew Linden‎ | Office Hours
Revision as of 12:39, 11 March 2008 by Andrew Linden (talk | contribs) (formatted with Zero's perl script)
(diff) ← Older revision | Latest revision (diff) | Newer revision → (diff)
Jump to navigation Jump to search
The printable version is no longer supported and may have rendering errors. Please update your browser bookmarks and please use the default browser print function instead.

Transcript of Andrew Linden's office hours:

[11:03] Arawn Spitteler: I want to script one of these, that doesn't move you around as much, and only uses one prim.
[11:03] Arawn Spitteler: Hi, Andrew
[11:03] Rex Cronon: hi
[11:03] Andrew Linden: Hello everyone.
[11:03] Rex Cronon: how is h4 doing?
[11:04] Gaius Goodliffe: Good morning :)
[11:04] Andrew Linden: I no longer have trouble remembering that I have office hours these days.
[11:04] Andrew Linden: In the past I used to almost forget to show up.
[11:05] Andrew Linden: Havok4... is moving along. We think we're going to push it out everywhere on the 25th
[11:05] Andrew Linden: that is the date we're shooting for
[11:05] Arawn Spitteler: Fortnight
[11:05] Rex Cronon: on the same date on all sims?
[11:05] Gaius Goodliffe: Then the real screaming begins. ;)
[11:05] Andrew Linden: yes, I think that is the plan
[11:06] Andrew Linden: I can't remember if there were some transition there.
[11:06] Enrico Genosse waves.
[11:06] Andrew Linden: Sidewinder knows. I just know that I have to fix every "blocker" bug a week or so before that
[11:06] Rex Cronon: hi
[11:07] Andrew Linden: ok, I might as well give a little summary of where the Havok4 project is...
[11:07] Andrew Linden: We're going to try to have a new update in QA on Thurday
[11:08] Andrew Linden: so that would mean... maybe on Friday evening or afternoon we could update the Preview
[11:08] Andrew Linden: and maybe some of the Havok4 regions on the main grid... not sure.
[11:08] Andrew Linden: Kinda depends on when QA declares it ok.
[11:09] Andrew Linden: Lessee... that would be... around the 15th
[11:09] Gaius Goodliffe: Will that include the fixes you mentioned in the comments here: https://jira.secondlife.com/browse/SVC-1567 ?
[11:09] Andrew Linden: er... 14th
[11:09] Andrew Linden: so it should actually be pushed out everywhere around the 17th or 18th at the latest
[11:09] Andrew Linden: er... on all of the early adopters, I mean
[11:10] Andrew Linden: then we would have another two or three days to fix any last minute bugs
[11:11] Andrew Linden: before the code would freeze and we would be in QA for the final update (everywhere) which should happen on the 25th... or 26th (Wed)
[11:11] Andrew Linden: I'm a little vague on the final details. I'm just working hard until they tell me I can't check in anything else.
[11:12] Andrew Linden: As we've mentioned before, some known bugs will be in the final version, and we'll be fixing those for another few weeks
[11:12] Andrew Linden: that is, we'll keep the Havok4 dev team intact for a few weeks or couple of months
[11:13] Andrew Linden: but eventually the Havok4 team will break up and join other projects. I'll probably join our bugfixing team for a while
[11:13] Andrew Linden: and maybe work on a few easy post-havok4 features
[11:13] Shirley Marquez: and Sidewinder will find something new to keep track of I guess :)
[11:14] Andrew Linden: Yes, sidewinder will also move on to another project, or two.
[11:14] Andrew Linden: He is actually working on a few other internal projects, I think.
[11:14] Andrew Linden: But Havok4 is his main thing.
[11:14] Andrew Linden: Lessee... what other news.
[11:15] Andrew Linden: I've fixed the VEHICLE_NO_MOTOR_UP bug
[11:16] Andrew Linden: but some vehicles still hit prim seams badly. I was struggling with that one, and decided to move on to things I could actually make progress on.
[11:16] Andrew Linden: I've got some ideas on what to do there, but they may require most of a day writing new code, meanwhile little easy things were piling up.
[11:17] Rex Cronon: whoever likes to drives cars might not like it
[11:17] Andrew Linden: The bug I'm currently working on is SVC-1760.
[11:17] Andrew Linden: It appears that some very complex prims (lots of triangles) will be replaced with a big box right now.
[11:18] Arawn Spitteler would expect Prim Seams to be easier on Sliding Objects, with H4: If objects can more easily seperate, they should more easily collide.
[11:18] Andrew Linden: The problem is that the simulator is trying to add too much detail, and the triangle limit is hit and it fails to buidl triangles.
[11:18] Rex Cronon: torus?
[11:18] Andrew Linden: Yes, so a hollow torus with extra spirals may get boxified atm.
[11:19] Kooky Jetaime: Andrew, this may not be totally H4 related, and I honestly don't know what version our sim is running (Albulata), but when I was on a 4 wheeler the other day, if I was traveling along at a good clip towards a sim border, sometimes I'd freeze, and find myself on the other side of it (and on the other sim). This would be 50m+ away from the line it would happen. Hear of anything similar happening anywhere?
[11:19] Rex Cronon: wow. so i can no longer drop a ball in hollow torus:(
[11:20] Enrico Genosse: hmm, could this problem with complex shapes affect the cpu time on physics? My dogs use a lot of torii.
[11:20] Arawn Spitteler wonders what that's going to do for Water-Slides.
[11:20] Andrew Linden: kooky, I think I've seen that problem a few times myself. I don't know what is causing it yet. The simulator continues, and the client continues to render, but network updates are failing for a few seconds.
[11:20] Andrew Linden: ah the dogs...
[11:20] Kooky Jetaime: I'm using 1.19.1(RC)..
[11:20] Rex Cronon: would a torus that is not hollow be left alone?
[11:21] Andrew Linden: Enrico, our current plan is to punt the dog performance problem until after Havok4 is "done".
[11:21] Andrew Linden: Our logic on that is... there aren't very many dog owners that have a very large number of dogs
[11:21] Arawn Spitteler: Would a Tube have similar trouble? I was getting some odd behaviour, in my last class.
[11:21] Kooky Jetaime: I'm not sure if I was on it when it happened or the last WL canditate, but I think I was on 1.19.1(rc)... At first I thought that you guys (ll) had improved sim crossing anticipation to start the handoff earlier when heading for a crossing on a vehicle, so when you hit the border, you would be already on the new sim, and it would eliminate the falling through problems..
[11:22] Andrew Linden: and the bug has a workaround in the sense that you can try to keep the dogs in smaller piles than 5 at a time
[11:22] Andrew Linden: That is, we don't think that blocks deploying Havok4 for the vast majority of the grid.
[11:22] Andrew Linden: And we do plan on trying to fix it.
[11:22] Enrico Genosse: aw. I understand. I've got some experimental test results that might help isolate the problem... when you're ready.
[11:23] Andrew Linden: Hrm... I don't have much other news.
[11:23] Andrew Linden: The table is now open to all topics. First one is Enrico's dog performance data.
[11:24] Andrew Linden: Go ahead Enrico
[11:24] Enrico Genosse: well, I've tried some variations on the dogs ...
[11:24] Enrico Genosse: to see the effect on performance....
[11:24] Enrico Genosse: noticed a couple things...
[11:24] Andrew Linden: have you made box dogs yet?
[11:24] Enrico Genosse: box dogs? I don't understand.
[11:25] Andrew Linden: Have you tried using boxes for your dog geometry, to isolate the effect of the prim complexity contribution to performance problems.
[11:25] Enrico Genosse: nope. but I will. You mean change all the child prims to simple boxes, eh? Good idea.
[11:25] Andrew Linden: Yes, that would also be a good test
[11:26] Andrew Linden: Actually, boxes and true sphere (uniform in scale) are the cheapest shapes to simulate
[11:26] Enrico Genosse nods.
[11:26] Andrew Linden: anyway, what was your data?
[11:27] Enrico Genosse: well, I turned of the 'walking' animation in the dogs (non-phys movement of child prims)....
[11:27] Enrico Genosse: and performance came up a notch....
[11:27] Andrew Linden: oh... the dogs constantly change their shape (child prim positons animate)
[11:27] Enrico Genosse: right.
[11:27] Andrew Linden: I haven't actually seen the dogs yet.
[11:27] Andrew Linden: Go on.
[11:28] Enrico Genosse: anytime, I'd love to show you... anyway...
[11:28] Enrico Genosse: the dogs have a feature called 'nudge'....
[11:28] Enrico Genosse: tells other dogs to move away if they are too close...
[11:28] Enrico Genosse: help protect against H1 crashes...
[11:28] Enrico Genosse: I turned it off today to see....
[11:28] Enrico Genosse: and performance actually took LONGER to recover...
[11:29] Enrico Genosse: makes me wonder about the physics settling algorthym
[11:29] Andrew Linden: that isn't too suprising. The things that kill a Havok1 engine also load a Havok4 engine.
[11:29] Enrico Genosse nods.
[11:29] Enrico Genosse: one more interesting thing...
[11:29] Enrico Genosse: normally, the dogs stop moving and go non-phys....
[11:30] Enrico Genosse: when time dilation drops below .6...
[11:30] Enrico Genosse: I took that out expecting worse performance...
[11:30] Enrico Genosse: but had no effect on performance!
[11:30] Enrico Genosse: (except dogs got to their target sooner of course).
[11:30] Enrico Genosse: that's it for now, I'll add it to the jira comments.
[11:31] Gaius Goodliffe: Did TD drop below .6 during that test?
[11:31] Andrew Linden: Well, as you can see, the dogs could be optimized a bit to spare the physics engine
[11:31] Enrico Genosse: oh, yes. It hangs between .5 and .6 while several dogs move at once.
[11:31] Andrew Linden: but there are probably places where the physics engine could also be optimized to reduce the problem
[11:31] Andrew Linden: that's the stuff we'll be working on after Havok4 is declared complete
[11:31] Enrico Genosse: I'm happy to make any optimizations within the dogs that I can.
[11:32] Enrico Genosse: I just need some guidance on what to do there.
[11:32] Andrew Linden: And finally... there are some features we'd like to add that would help content creator's provide "hints" to the physics engine for optimizing stuff like dogs
[11:32] Enrico Genosse: !
[11:33] Andrew Linden: These are ideas that come up again and again, internally and suggested by residents too
[11:33] Gaius Goodliffe: Like not having to recompute the collision shape on every leg movement?
[11:33] Andrew Linden: but we're not working on those until after Havo4 is done (and stable)
[11:33] Andrew Linden: such as:
[11:33] Kooky Jetaime: that would definately be an optimization Gaius
[11:33] Enrico Genosse: that leads to one more question if I may...
[11:33] Andrew Linden: (1) hint to replace the collision shape of a prim collection with a single convex hull shape
[11:33] Enrico Genosse: I have a 'protective bubble' around the dogs that envelopes child prims...
[11:33] Enrico Genosse: that helped with sim crashes in H1...
[11:34] Andrew Linden: (2) hint to NOT really move the child prims collision shape (viewer side animation only)
[11:34] Enrico Genosse: does that help still? Or should I take away the bubble now?
[11:34] Andrew Linden: (3) hint to boxify the individual parts of a complex linked shape
[11:34] Andrew Linden: and a few others
[11:34] Enrico Genosse nods.
[11:34] Enrico Genosse: I see.
[11:34] Shirley Marquez: a thought.... what if you made the legs sculpties and changed the sculpt texture instead -- that doesn't change the shape so far as physics are concerned, right? (or is that changing too?)
[11:34] Andrew Linden: the bubble kinda helps, but the object is still complex inside
[11:34] Enrico Genosse: I was JUST going to ask that!
[11:35] Andrew Linden: which causes load even when the internal parts are not colliding
[11:35] Enrico Genosse nods.
[11:35] Kooky Jetaime: Andrew, will H4 handle objects with both physical and phantom prims, or is it still 1 setting fits all?
[11:35] Andrew Linden: Unfortunately, the simulator can't detect automagically when these simplification steps could be taken
[11:35] Enrico Genosse nods.
[11:35] Andrew Linden: so we would have to provide them as hints that content creators could use
[11:35] Enrico Genosse: I see.
[11:36] Gaius Goodliffe: If we could mix physical and non-phys prims, we could just make a physical box around the item and make the stuff inside non-phys for a complex look with simple collisions.
[11:36] Andrew Linden: Kooky, per-prim collision properties is something that we'd like to add
[11:36] Enrico Genosse: that wold be perfect for me, Gaius.
[11:36] Kooky Jetaime: Why do I see a physics tab being added to the build tools.. heh
[11:36] Andrew Linden: it is kinda difficult to do very fancy per-prim collision properties in Havok4, however just making some prims non-collidable would be doable
[11:37] Gaius Goodliffe: (and by non-phys I mean phantom)
[11:37] Andrew Linden: so yeah, consider that item (4). There are a few others
[11:37] Enrico Genosse: and what about switching sculpt textures to achieve animation? how would that help?
[11:37] Andrew Linden: well... item (1) was to replace the collection with a convex hull
[11:37] Shirley Marquez: so Enrico could just put a transparent physical bubble around the dog and make everything else phantom
[11:38] Shirley Marquez: if the CHANGING shapes are what is confusing the physics engine, giving the appearance of change with sculpties would be better
[11:38] Andrew Linden: which would be simpler than allowing the content creator to specify the shell shape
[11:38] Rex Cronon: what if u step on its tail?
[11:38] Kooky Jetaime: Andrew, I'll admit, I've fallen very out of step with H4's development, is there a wiki page with a list of the changes in place?
[11:38] Enrico Genosse: hehehehe, he won't bite.
[11:38] LuckyJade Alter giggles
[11:38] Andrew Linden: A variation of (1) would be to be able to specify sub-sets of prims that could be convexified
[11:39] Andrew Linden: so, perhaps you could break a complex object up into 2 or more groups, each of which is replaced with the convex hull of the group
[11:39] Arawn Spitteler thinks it sounds like the dogs could be animated sculpty.
[11:39] Andrew Linden: when I say "convex hull" I mean the convex envelope of all the shapes inside.
[11:39] Enrico Genosse nods.
[11:40] Rex Cronon: a "collision skin"
[11:40] Andrew Linden: Anybody else have some pressing issues?
[11:40] Rex Cronon: so, will a torus that is not hollow be left alone?
[11:40] Andrew Linden: No Rex, a non-hollow torus is still concave
[11:40] Gaius Goodliffe: I have an example object where llSetPos fails from a child prim in H4 (but works fine in H1).
[11:41] Arawn Spitteler also had some odd hollow tube behaviour, that might be related.
[11:41] Andrew Linden: the convex hull of a torus would have its hole filled in flat
[11:41] Andrew Linden: What was the problem with the hollow tubes Arawn
[11:41] Shirley Marquez: Honestly, I don't think you have to worry TOO much about the complaints of broken content -- people will be too busy dealing with the content broken by WindLight :)
[11:42] Andrew Linden: Gaius, I think maybe Kelly Linden is working on your llSetPos() bug.
[11:42] Arawn Spitteler: I have a sit position set script, where the owner touches to reset.
[11:42] Gaius Goodliffe: kk -- I came up with a very simple example demo object, I'll fire him a copy of it...
[11:42] Andrew Linden: Shirley, those with broken content will complain loudly
[11:42] Arawn Spitteler: Hollow Tubes make the best spiral stairs, and this script makes it a teleporter.
[11:42] Andrew Linden: and those complaints will be funneled to the Havok4 team.
[11:43] Shirley Marquez: I know really... just putting it in perspective
[11:43] Rex Cronon: there r some defences that use toruses. these will be broken:(
[11:43] Arawn Spitteler: But, I discovered that the sim had gone H4, when I stood at the top of the stiars, set the tp location, and using the tp sent me bouncing
[11:43] Andrew Linden: oh, he bouncing avatar problem. I've already fixed that, I think.
[11:43] Arawn Spitteler: Somehow, my standing position became a colliding position
[11:43] Andrew Linden: Just yesterday.
[11:44] Arawn Spitteler: Was that a change of position, on my part, or a confusion of hollowness.
[11:44] Andrew Linden: Arawn, when you say "sent me bouncing" do you mean it pushed you out very fast?
[11:44] Arawn Spitteler: If the tube wasn't properly hollow, I shouldn't have been able to set to a collission
[11:45] Andrew Linden: Or do you man that your avatar was bouncing after it tp'd?
[11:45] Arawn Spitteler: When I stood, since I didn't have unsit on auto, I went flying, in a non-flying state.
[11:45] Andrew Linden: hrm...
[11:46] Andrew Linden: Arawn, are the stairs a megaprim? > 10m on a side?
[11:46] Andrew Linden: There were some changes recently where megaprims can get extra "detail"
[11:47] Andrew Linden: and can cause them to overshoot the triangle limit --> they get boxified
[11:47] Andrew Linden: I don't think that is your problem, actually.
[11:48] Andrew Linden: Arawn, if you give me a copy I may be able to look at it
[11:48] Andrew Linden: ok, so that spiral is colliding properly right now
[11:50] Arawn Spitteler: Seems to be colliding properly, now
[11:50] Andrew Linden: there is a little bit of slop when the seat position is calculated
[11:50] Arawn Spitteler: Has it been restarted since Friday?
[11:50] Andrew Linden: it isn't necessarily always the same place, if a sit-hint has not been set
[11:50] Shirley Marquez: that whole thing is just one prim, cute
[11:50] Kooky Jetaime looks up.. I think Arawn just wanted to be on a high pedistal.. *Chuckles...
[11:50] Arawn Spitteler: Shouldn't it calculate from Agent Target?
[11:50] Andrew Linden: and the stand up position is influenced by the sit position
[11:51] Arawn Spitteler: This is a highly efficient stairway, Two Prims can take you up or down, walking or sitting.
[11:51] Arawn Spitteler: Most will help the lag toss you off.
[11:52] Andrew Linden: Well, sounds like it is intermittent. When you've got a reliable repro file it in jira.
[11:52] Andrew Linden ... must ... focus
[11:52] Enrico Genosse: hehehe
[11:52] Enrico Genosse: like a laser beam, andrew.
[11:52] Gaius Goodliffe: I find focus before lunch is impossible...
[11:52] Andrew Linden: Anybody else have some issues or questions?
[11:53] Andrew Linden: Er... anybody have other issues or questions?
[11:53] Enrico Genosse shrugs
[11:53] BugTest Dumpling: LOL
[11:53] Shirley Marquez: no, just happy to hear that things are progressing well
[11:53] Enrico Genosse nods.
[11:53] Kooky Jetaime: Andrew
[11:53] Andrew Linden: Yeah, we think we're close.
[11:53] Aybabtu Aabye: theres a transcript of this session?
[11:54] Kooky Jetaime: Any chance of the physics getting a little tighter? *Points to my demo over on the blue square
[11:54] Andrew Linden: Yes Aybabtu, I'll try to post it right after the meeting.
[11:54] Kooky Jetaime: thigns are a little..spacey arn't they?
[11:54] Rex Cronon: where can we find a list wiht the shape used for each type of prim by the physics engine?
[11:54] Aybabtu Aabye: thanks
[11:54] Shirley Marquez: us CSI folks are a LITTLE concerned about the timing; the 26th will be a big day for us, that's when CBS is rebroadcasting the CSI in SL episode
[11:54] Andrew Linden: http://wiki.secondlife.com/wiki/User:Andrew_Linden
[11:54] Andrew Linden: the transcripts can be found there
[11:55] Andrew Linden: Hrm... Shirly I think an update is scheduled for either the 25th, or the 26th
[11:55] Shirley Marquez: yes, you mentioned that earlier
[11:55] Andrew Linden: don't we always do our updates on Wednesdays still?
[11:56] Andrew Linden: Or has that changed?
[11:56] BugTest Dumpling: No
[11:56] Shirley Marquez: we hope the update goes well -- and that it doesn't roll over us between 8 and 9pm SLT on Wednesday!
[11:56] BugTest Dumpling: I'm sure it isnt like that anymore : )
[11:56] Shirley Marquez: oops, make that 7 to 8 SLT
[11:56] BugTest Dumpling: lol
[11:56] Arawn Spitteler thinks: We'll want our catastrophic roll-back before the CSI feature
[11:57] Sidewinder Linden: /heh... i'm trying to get the csi folks to test before the show... :)
[11:57] Kooky Jetaime: Hi Sidewinder
[11:57] Sidewinder Linden: hi kooky
[11:57] Andrew Linden: Well, the people in charge of deploying may want to wait if a huge influx of curious newbies were to be loging in
[11:57] Shirley Marquez: if it's deployed as a rolling update, it might take a while to roll out to the entire grid
[11:57] Rex Cronon: hi sidewinder
[11:57] Andrew Linden: I'll make sure to mention it Shirley
[11:57] Sidewinder Linden: what are we talking about?
[11:57] Sidewinder Linden: hi guys
[11:57] Shirley Marquez: hello, Sidewinder!
[11:57] BugTest Dumpling: Hey Sidewinder
[11:57] Enrico Genosse waves to Sidewinder too.
[11:57] Shirley Marquez: wreaking Havok on the grid
[11:58] Sidewinder Linden: heh
[11:58] Enrico Genosse: har!
[11:58] Andrew Linden: Sidewinder, apparently CBS may be re-airing the CSI:NY SL episode on Wed the 25th
[11:58] Andrew Linden: er... 26th
[11:58] Shirley Marquez: 26th
[11:58] Sidewinder Linden: yes...
[11:58] Andrew Linden: The deploy around then... is it happening on the 25th or the 26th?
[11:59] Arawn Spitteler imagines an episode of CSI-SL: What if G-Team were to catch a german conspiracy to smuggle Nazi Kid Porn on the grid?
[12:00] Sidewinder Linden: well the final release schedule is up to the release team, and coordination
[12:00] Sidewinder Linden: with several other projects...
[12:00] Sidewinder Linden: they're quite aware of the csi show schedule, for what it's worth
[12:00] Sidewinder Linden: also - it will depend on not acquiring any huge blocker problems
[12:00] Kooky Jetaime: Andrew, or sidewinder, is the physics going to be tightened up at all, or are we gonna be stuck with wide gaps like that *Points at the blue square with boxes on it...
[12:01] Sidewinder Linden: i thought most of the gap problems were resolved...
[12:01] Sidewinder Linden: there was a prim-docker bug that i *think* was in the last deploy
[12:01] Sidewinder Linden: maybe i'm not understanding what you're after..
[12:01] Kooky Jetaime: theres .1m of space between prims
[12:02] Andrew Linden: I think Kooky is talking about the collision tolerance for dynamic objects.
[12:02] Andrew Linden: Kooky, it will ship with that collision tolerance, yet.
[12:02] Sidewinder Linden: ahh ok different issue
[12:02] Andrew Linden: yes.
[12:02] Kooky Jetaime: any chance of that getting better in the future or?
[12:02] Creem Pye: the collision tolerance is the same with avatars, right?
[12:02] Creem Pye: so the bottom of my bounding box is in the middle of my shins
[12:03] Andrew Linden: Perhaps Kooky. It is a "misfeature" of Havok4. Perhaps someday we'll be able to eliminate it.
[12:03] Kooky Jetaime: oh.
[12:03] BugTest Dumpling: What's the AR Catagory for Bots?
[12:03] Kooky Jetaime: I was gonna say, H1 IIRC was significantly better
[12:03] Andrew Linden: Don't know much about ARs.
[12:03] BugTest Dumpling: >>.<<
[12:04] Sidewinder Linden: /bugtest... "harassment"? depends on what they're doing :)
[12:04] Andrew Linden: Kooky, as far as I know H1 also has a collision tolerance of 0.1 m
[12:04] BugTest Dumpling: Is a CopyBot, is a shady area anyway, but Assault will do
[12:05] Rex Cronon: shouldn't be 0.01?
[12:05] Kooky Jetaime: Copybot would be Other
[12:05] Kooky Jetaime: Yea, I thought it was .01, since that was the smallest you could make a prim
[12:05] BugTest Dumpling: Forgot about other *slaps self*
[12:05] Kooky Jetaime needs to find an h1 sim
[12:06] Aybabtu Aabye: wth
[12:06] BugTest Dumpling: Right gotta tp be well : )
[12:06] Rex Cronon: if is 0.1 is no wonder why is so "easy" over prims
[12:06] Rex Cronon: to drive over*
[12:07] Kooky Jetaime: ya
[12:07] Andrew Linden: Okay everyone, I've got to go. Thanks for coming.
[12:07] Kooky Jetaime: that would definatly explain prim crossing problems
[12:07] Creem Pye: have a good day
[12:07] Enrico Genosse: thank you, andrew. bye y'all!
[12:07] Rex Cronon: bye andrew
[12:07] Kooky Jetaime: Rex - you know a H1 sim?
[12:07] Gaius Goodliffe: Thank you!
[12:07] Rex Cronon: yes
[12:07] Rex Cronon: rausch:)