 |
 |
|
 |
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Here's an example of the output from Push-Ball v1.0.
See povray.general for more information.
You can also download the Push-Ball package from povray.binaries.scene-files
Greetings,
Rune
---
Updated April 25: http://rsj.mobilixnet.dk
Containing 3D images, stereograms, tutorials,
The POV Desktop Theme, 350+ raytracing jokes,
miscellaneous other things, and a lot of fun!
Post a reply to this message
Attachments:
Download 'match2.mpg' (377 KB)
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Very cool. Looks like a neat game. You'd need mental powers to play it,
though. :D
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Very impressive.
It's a shame I have the programming abilities of a Woodlouse. :)
One question though. Are the bots trying to get the ball into the goal
marked with their own colour, or into any goal *but* their own colour?
Bye for now,
Jamie.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Tony[B]" wrote:
> Very cool. Looks like a neat game.
Thanks!
> You'd need mental powers to play it, though. :D
Mental powers?
Greetings,
Rune
---
Updated April 25: http://rsj.mobilixnet.dk
Containing 3D images, stereograms, tutorials,
The POV Desktop Theme, 350+ raytracing jokes,
miscellaneous other things, and a lot of fun!
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Jamie Davison" wrote:
> Very impressive.
Thanks!
> It's a shame I have the programming abilities of a Woodlouse. :)
A very simple bot is not so complicated to program...
> One question though. Are the bots trying to get the ball
> into the goal marked with their own colour, or into any
> goal *but* their own colour?
Each bot tries to get the ball into any goal *but* their own color.
Greetings,
Rune
---
Updated April 25: http://rsj.mobilixnet.dk
Containing 3D images, stereograms, tutorials,
The POV Desktop Theme, 350+ raytracing jokes,
miscellaneous other things, and a lot of fun!
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Ooohhhh .... looks a bit unequal ...
the violet one seems to be the "bad" guy ... they are all against
him ...
The question is how YOUR bots determine where they finally want
the ball get to ...
Are they positive for any direction that is not to their own
goal, or do they calculate a special target point where they try
to drive the ball to ???
Wouldn't it be a better concept to let them try to get the ball
into their own goal and not to protect it ???
I know ... only questions ...
--
,', Jan Walzer \V/ http://wa.lzer.net ,',
',',' student of >|< mailto:jan### [at] lzer net ',','
' ComputerScience /A\ +49-177-7403863 '
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Jan Walzer" wrote:
> Ooohhhh .... looks a bit unequal ...
> the violet one seems to be the "bad" guy ...
> they are all against him ...
Not really, it's everybody against everybody.
The ones at the sides actually tries to push the ball to the side, but they
don't quite succeed, so they end up helping the green one...
> The question is how YOUR bots determine where they finally want
> the ball get to ...
> Are they positive for any direction that is not to their own
> goal, or do they calculate a special target point where they try
> to drive the ball to ???
That's up to the bot designer. MY bots try to get down behind the ball
before they begin pushing it. However, the blue one is a bit more careful to
get back just behind the ball before it pushes, while the other three are a
bit better at catching the opportunity to push when it's there. With other
game settings (maxspeed, inertia, fieldsize, etc.) the blue one might have
won...
> Wouldn't it be a better concept to let them try to get the ball
> into their own goal and not to protect it ???
That would be really easy to change, since it really wouldn't make am actual
difference.
Anyway, thanks for your interest! I hope you will try out designing your own
bot :-)
Greetings,
Rune
---
Updated April 25: http://rsj.mobilixnet.dk
Containing 3D images, stereograms, tutorials,
The POV Desktop Theme, 350+ raytracing jokes,
miscellaneous other things, and a lot of fun!
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
> > You'd need mental powers to play it, though. :D
>
> Mental powers?
I meant to say that if you played it in RL, you'd need to be psychic to move
the balls, without touching them.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Tony[B]" wrote:
> > > You'd need mental powers to play it, though. :D
> >
> > Mental powers?
>
> I meant to say that if you played it in RL, you'd need
> to be psychic to move the balls, without touching them.
I understood you correctly then...
They are not just balls anymore. They are small bots... :-)
Didn't you see the engines? You know, those that turned off in the end of
the game?
Greetings,
Rune
---
Updated April 25: http://rsj.mobilixnet.dk
Containing 3D images, stereograms, tutorials,
The POV Desktop Theme, 350+ raytracing jokes,
miscellaneous other things, and a lot of fun!
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
On Sat, 10 Jun 2000 22:00:02 -0500, "Tony[B]" <ben### [at] panama c-com net>
wrote:
>> > You'd need mental powers to play it, though. :D
>>
>> Mental powers?
>
>I meant to say that if you played it in RL, you'd need to be psychic to move
>the balls, without touching them.
Not necessarily -- remote controlled gyroscopes?
--
Marc van den Dikkenberg
--
The PowerBasic Archives -- http://www.xs4all.nl/~excel/pb.html
All Basic Code Archives -- http://come.to/abcpackets
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
With four actors, I'm not sure I like the idea of getting it to "anybody else's"
home base. It seems too much luck to be the one that people push towards.
With FOUR, I think you should shoot for your OWN base. (and perhaps start in a
different place).
With TWO, I think the game makes sense either way, perhaps hitting someone
else's base is AOK.
Rune wrote:
> Here's an example of the output from Push-Ball v1.0.
>
> See povray.general for more information.
>
> You can also download the Push-Ball package from povray.binaries.scene-files
>
> Greetings,
>
> Rune
>
> ---
> Updated April 25: http://rsj.mobilixnet.dk
> Containing 3D images, stereograms, tutorials,
> The POV Desktop Theme, 350+ raytracing jokes,
> miscellaneous other things, and a lot of fun!
>
> Name: match2.mpg
> match2.mpg Type: MPEG Video (video/mpeg)
> Encoding: x-uuencode
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Again, great idea, BUT:
> pb_goalrot - Y Rotation of goals relative to bots' initial positions.
What does this mean?
> pb_power - The influence each bot has on its own movement.
> pb_inertia - The influence inertia has on the bot's movements.
> pb_vibrate - How much each bot vibrate (to add a random factor).
> pb_seednr - Controls the random initial positions and vibrations.
Ugh, these variables intimidate me!
Q: how would your algorithm allow some random movement? How does one declare a
random seed: can it be done locally or can we acces the "global" seed?
Rune wrote:
> Here's an example of the output from Push-Ball v1.0.
>
> You can also download the Push-Ball package from povray.binaries.scene-files
> Greetings,
> Rune
>
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
1. You should change the name of the orientation variable to Orientation to
remain compatible with multiple versions of pov.
2. I can only run it "once." Thereafter, at frame 1, it's stuck showing me the
last frame of the previous contest. There needs to be some kind of variable
reset somewhere.....
Rune wrote:
> Here's an example of the output from Push-Ball v1.0.
>
> See povray.general for more information.
>
> You can also download the Push-Ball package from povray.binaries.scene-files
>
> Greetings,
>
> Rune
>
> ---
> Updated April 25: http://rsj.mobilixnet.dk
> Containing 3D images, stereograms, tutorials,
> The POV Desktop Theme, 350+ raytracing jokes,
> miscellaneous other things, and a lot of fun!
>
> Name: match2.mpg
> match2.mpg Type: MPEG Video (video/mpeg)
> Encoding: x-uuencode
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Hi Greg!
I really appreciate your interest in this! :-)
> 1. You should change the name of the orientation variable
> to Orientation to remain compatible with multiple versions
> of pov.
OK, I'll do that.
> 2. I can only run it "once." Thereafter, at frame 1, it's
> stuck showing me the last frame of the previous contest.
> There needs to be some kind of variable reset somewhere.....
From the documentation:
"Every time you want to start render a new match, you must
first delete the file "#pb_data.inc". It is only used for
carrying data between frames, and can safely be deleted."
Greetings,
Rune
---
Updated April 25: http://rsj.mobilixnet.dk
Containing 3D images, stereograms, tutorials,
The POV Desktop Theme, 350+ raytracing jokes,
miscellaneous other things, and a lot of fun!
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Greg M. Johnson" wrote:
> > pb_goalrot - Y Rotation of goals relative to bots' initial positions.
>
> What does this mean?
If it is set to 0, then bot X's goal is right behind bot X in the start of
the game.
Bot X must go forward and push the ball away from its goal.
If it is set to 180, then bot X's goal is rotated 180 degrees, so that it is
in the opposite side of the game field in the start of the game. Bot X must
then go around the ball and push the ball back again. This is more
challenging for the bots.
The drawing below may help if they are previewed correctly.
-----------------
______
/ \
| |
goal X |X->O |
| |
\______/
pb_goalrot 0
-----------------
goal X
______
/ _ \
| / V |
|X O |
| |
\______/
pb_goalrot 90
-----------------
______
/ ____ \
| / \ |
|X O<-' | goal X
| |
\______/
pb_goalrot 180
-----------------
> > pb_power - The influence each bot has on its own movement.
> > pb_inertia - The influence inertia has on the bot's movements.
> > pb_vibrate - How much each bot vibrate (to add a random factor).
> > pb_seednr - Controls the random initial positions and vibrations.
>
> Ugh, these variables intimidate me!
They're not so bad... ;-)
pb_power makes sure that the bots can't change direction or speed faster
than they're allowed to. In real life it takes time for things to change
direction or speed. That's because our own strength/power/force is limited,
and in Push-Ball it's the same. The higher you set pb_power, the quicker the
bots can change direction and speed.
pb_inertia is the amount of inertia. Inertia is a "force" that keeps things
still, or keeps them in movement. In reality, when you push a ball it will
not stop rolling immediately when you stop pushing; it will keep rolling by
itself for a while. A heavier ball will have more inertia. It will be harder
to get in movement, and once it's rolling, it will also be harder to stop it
again.
pb_vibrate is just a feature I added to add a little random element to the
games. If two of the same bots were competing, and there were no random
factor, nothing would happen, and no one would win. With pb_vibrate it is a
little more likely that one of the bots will win, even if they are
identical.
pb_seednr. What's so intimidating about this?
> Q: how would your algorithm allow some random movement?
> How does one declare a random seed: can it be done locally
> or can we access the "global" seed?
It can be done locally:
#declare MyBotSeed = seed(123);
When I think of it, the bots probably ought to have access to the frame
number, so they could do something like:
#declare MyBotSeed = seed(pb_frame);
That would be the only way to make random events that are different from
frame to frame.
I'll change the rules in the next version, so that the bots may access this
value (pb_frame).
Greetings,
Rune
---
Updated April 25: http://rsj.mobilixnet.dk
Containing 3D images, stereograms, tutorials,
The POV Desktop Theme, 350+ raytracing jokes,
miscellaneous other things, and a lot of fun!
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Greg M. Johnson" wrote:
> With four actors, I'm not sure I like the idea of getting it
> to "anybody else's" home base. It seems too much luck to be
> the one that people push towards.
>
> With FOUR, I think you should shoot for your OWN base. (and
> perhaps start in a different place).
>
> With TWO, I think the game makes sense either way, perhaps hitting someone
> else's base is AOK.
OK, in the next version I'll change the game so that each bot should get the
ball in its own goal.
Greetings,
Rune
---
Updated April 25: http://rsj.mobilixnet.dk
Containing 3D images, stereograms, tutorials,
The POV Desktop Theme, 350+ raytracing jokes,
miscellaneous other things, and a lot of fun!
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
> Anyway, thanks for your interest! I hope you will try out
designing your own
> bot :-)
Sure ... sometime, but at the moment I'm a bit stressed with my
studies ...
I'm happy, having enough time to read the groups here, but not
much time for poving...
--
,', Jan Walzer \V/ http://wa.lzer.net ,',
',',' student of >|< mailto:jan### [at] lzer net ',','
' ComputerScience /A\ +49-177-7403863 '
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Rune wrote:
> Here's an example of the output from Push-Ball v1.0.
So the purple ball lost but who won?
Pabs
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Rune wrote:
> ---
> Updated April 25: http://rsj.mobilixnet.dk
> Containing 3D images, stereograms, tutorials,
> The POV Desktop Theme, 350+ raytracing jokes,
> miscellaneous other things, and a lot of fun!
The zip file for The POV Desktop Theme seems to be corrupted
<winzip output>
Dll: C:\Program Files\WinZip\WZ32.DLL - 17/10/1998 7:00 am
Testing ...
testing: POV wait.ani OK
testing: POV busy.ani OK
testing: POV arrow.cur OK
testing: POV size we.cur OK
testing: POV size nesw.cur OK
testing: POV size ns.cur OK
testing: POV size nwse.cur OK
testing: POV no.cur OK
testing: POV move.cur OK
Error in file #10: bad Zip file offset (Error local header signature not
found): disk #1 offset: 17739
Error in file #11: bad Zip file offset (Error local header signature not
found): disk #1 offset: 17998
Error in file #12: bad Zip file offset (Error local header signature not
found): disk #1 offset: 18127
Error in file #13: bad Zip file offset (Error local header signature not
found): disk #1 offset: 18262
Error in file #14: bad Zip file offset (Error local header signature not
found): disk #1 offset: 18527
Error in file #15: bad Zip file offset (Error local header signature not
found): disk #1 offset: 19554
Error in file #16: bad Zip file offset (Error local header signature not
found): disk #1 offset: 376392
Error in file #17: bad Zip file offset (Error local header signature not
found): disk #1 offset: 377985
Error in file #18: bad Zip file offset (Error local header signature not
found): disk #1 offset: 381506
Error in file #19: bad Zip file offset (Error local header signature not
found): disk #1 offset: 444792
Error in file #20: bad Zip file offset (Error local header signature not
found): disk #1 offset: 448578
Error in file #21: bad Zip file offset (Error local header signature not
found): disk #1 offset: 451772
Error in file #22: bad Zip file offset (Error local header signature not
found): disk #1 offset: 455419
testing: logos.sys OK
testing: POV help.cur OK
At least one error was detected in C:/TEMP/povtheme.zip.
</winzip output>
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Serge LAROCQUE" wrote:
> Nice ASCII diagrams :-)
Thanks!
> Reminds me of the ASCIImations site I saw somewhere,
> an Australian site I think. The author made an ASCIImation
> of the Star Wars movies. Quite convincing IMHO.
I've seen that too! Can't remember where though.
Greetings,
Rune
--
Updated June 12: http://rsj.mobilixnet.dk
3D images, include files, stereograms, tutorials,
The POV Desktop Theme, The POV-Ray Logo Contest,
music, 350+ raytracing jokes, and much more!
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Pabs" wrote:
> Rune wrote:
>
> > Here's an example of the output from Push-Ball v1.0.
>
> So the purple ball lost but who won?
With the current rules there's no winner, only a loser.
However, one could make the remaining winner bots compete in a new match,
and keep doing so until a winner were found.
Anyway, I'll change the rules in the next version, so that each bot must get
the ball in its *own* goal. That way there will be one winner, and the rest
are losers.
--
Updated June 12: http://rsj.mobilixnet.dk
3D images, include files, stereograms, tutorials,
The POV Desktop Theme, The POV-Ray Logo Contest,
music, 350+ raytracing jokes, and much more!
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Pabs" wrote:
> The zip file for The POV Desktop Theme seems to be corrupted
Thanks, I'll have a look at it.
I'll post a message when I think it's OK.
--
Updated June 12: http://rsj.mobilixnet.dk
3D images, include files, stereograms, tutorials,
The POV Desktop Theme, The POV-Ray Logo Contest,
music, 350+ raytracing jokes, and much more!
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Rune" wrote:
> "Pabs" wrote:
> > The zip file for The POV Desktop Theme seems to be corrupted
>
> Thanks, I'll have a look at it.
> I'll post a message when I think it's OK.
I have fixed it, so it works now.
--
Updated June 12: http://rsj.mobilixnet.dk
3D images, include files, stereograms, tutorials,
The POV Desktop Theme, The POV-Ray Logo Contest,
music, 350+ raytracing jokes, and much more!
Post a reply to this message
|
 |
|  |
|  |
|
 |
From: Jan Walzer
Subject: OT: ASCIImation (Re: Push-Ball v1.0 example)
Date: 13 Jun 2000 17:46:23
Message: <3946abaf@news.povray.org>
|
|
 |
|  |
|  |
|
 |
> > Reminds me of the ASCIImations site I saw somewhere,
> > an Australian site I think. The author made an ASCIImation
> > of the Star Wars movies. Quite convincing IMHO.
>
> I've seen that too! Can't remember where though.
Sounds very interesting ...
Could anybody so kind and try to remember and post(/mail) the
adress of this site ...
--
,', Jan Walzer \V/ http://wa.lzer.net ,',
',',' student of >|< mailto:jan### [at] lzer net ',','
' ComputerScience /A\ +49-177-7403863 '
Post a reply to this message
|
 |
|  |
|  |
|
 |
From: Mike Weber
Subject: Re: ASCIImation (Re: Push-Ball v1.0 example)
Date: 13 Jun 2000 17:49:30
Message: <3946ac6a@news.povray.org>
|
|
 |
|  |
|  |
|
 |
wouldn't mind seeing that too...
"Jan Walzer" <wal### [at] informatik uni-halle de> wrote in message
news:3946abaf@news.povray.org...
> > > Reminds me of the ASCIImations site I saw somewhere,
> > > an Australian site I think. The author made an ASCIImation
> > > of the Star Wars movies. Quite convincing IMHO.
> >
> > I've seen that too! Can't remember where though.
> Sounds very interesting ...
> Could anybody so kind and try to remember and post(/mail) the
> adress of this site ...
>
>
> --
>
> ,', Jan Walzer \V/ http://wa.lzer.net ,',
> ',',' student of >|< mailto:jan### [at] lzer net ',','
> ' ComputerScience /A\ +49-177-7403863 '
>
>
>
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
> > > > Reminds me of the ASCIImations site I saw somewhere,
> > > > an Australian site I think. The author made an ASCIImation
> > > > of the Star Wars movies. Quite convincing IMHO.
"Mike Weber" wrote:
> wouldn't mind seeing that too...
http://okcomputer.antiflux.org/~superfly/star-wars-asciimation-old.html
Greetings,
Rune
--
Updated June 12: http://rsj.mobilixnet.dk
3D images, include files, stereograms, tutorials,
The POV Desktop Theme, The POV-Ray Logo Contest,
music, 350+ raytracing jokes, and much more!
Post a reply to this message
|
 |
|  |
|  |
|
 |
From: Bugs74
Subject: a bitr off-topic... Re: ASCIImation (Re: Push-Ball v1.0 example)
Date: 13 Jun 2000 19:05:30
Message: <3946be3a@news.povray.org>
|
|
 |
|  |
|  |
|
 |
I found a real cool Star Wars Flash-movie (a stand alone .exe file only 1 MB
which shows the whole 'A New Hope'-episode in a cool animation)
If anyone's interested, mail me, and i'll send it to you!
Bugs74
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
A few more questions/requests:
1. Could the output file list the winner?
2. Could either the 'contest' .pov or the 'redisplay' .pov files actually put
some kind of character, word, or number on the balls? It would a few seconds of
elimination in trying to figure out which ball is "yours". This could be as
simple as CSG with a text string.
3. Shouldn't the check for max velocity occur outside the INC?
4. Is it possible to see the position of the ball 0 at time increment t-1??
Long term question:
So, in 25 words or less, how far away is this from a true football game (played
by spheres, of course)?
Rune wrote:
> "Greg M. Johnson" wrote:
> > > pb_goalrot - Y Rotation of goals relative to bots' initial positions.
> >
> > What does this mean?
>
> If it is set to 0, then bot X's goal is right behind bot X in the start of
> the game.
> Bot X must go forward and push the ball away from its goal.
>
> If it is set to 180, then bot X's goal is rotated 180 degrees, so that it is
> in the opposite side of the game field in the start of the game. Bot X must
> then go around the ball and push the ball back again. This is more
> challenging for the bots.
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Greg M. Johnson" wrote:
> A few more questions/requests:
>
> 1. Could the output file list the winner?
No, that would require a separate output file for that information.
However, the winner could be calculated anytime by both the generator and
the replayer, so there really is no need to store that data anyway.
> 2. Could either the 'contest' .pov or the 'redisplay' .pov files actually
put
> some kind of character, word, or number on the balls? It would a few
seconds of
> elimination in trying to figure out which ball is "yours". This could be
as
> simple as CSG with a text string.
That would be possible.
> 3. Shouldn't the check for max velocity occur outside the INC?
It does. Some of my bots checks that they are having as much velocity as
possible, but the check for max velocity does occur in the main inc file
(not the bots).
> 4. Is it possible to see the position of the ball 0 at time increment
t-1??
I'm not sure I understand that question.
> Long term question:
> So, in 25 words or less, how far away is this from a true football game
(played
> by spheres, of course)?
Very far away. The variety of strategies you can use is way too limited. The
only strategy I have had success with is "go behind the ball and push
forward".
I'm working on a new, entirely different game, where the bots shoot missiles
at each other, and the last survivor is the winner. I think it will be
easier to play for the bot designer, and I think it will be more fun too.
Greetings,
Rune
--
Updated June 12: http://rsj.mobilixnet.dk
3D images, include files, stereograms, tutorials,
The POV Desktop Theme, The POV-Ray Logo Contest,
music, 350+ raytracing jokes, and much more!
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
Rune wrote:
> However, one could make the remaining winner bots compete in a new match,
> and keep doing so until a winner were found.
>
> Anyway, I'll change the rules in the next version, so that each bot must get
> the ball in its *own* goal. That way there will be one winner, and the rest
> are losers.
How 'bout an option to play recursively (one loser) or non-recursively (one
winner)
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|  |
|
 |
"Pabs" wrote:
> How 'bout an option to play recursively (one loser) or
> non-recursively (one winner)
That is a possibility!
Greeting,
Rune
--
Updated June 12: http://rsj.mobilixnet.dk
3D images, include files, stereograms, tutorials,
The POV Desktop Theme, The POV-Ray Logo Contest,
music, 350+ raytracing jokes, and much more!
Post a reply to this message
|
 |
|  |
|  |
|
 |
|
 |
|  |
|
 |