00:12:37 -!- Sgeo has quit ("Ex-Chat").
00:27:11 <ihope_> ~pexec print "exvckhjo"
00:27:16 <ihope_> Wait, anonymous function?
00:30:42 <ihope_> |<-- anonfunc has left chat.us.freenode.net (Connection timed out)
00:43:16 <bsmntbombdood> ~pexec while 1: self.raw("PRIVMSG #esoteric :It's %s" % time.asctime(time.gmtime())); __import__("time").sleep(60 * 30);
00:43:23 <bsmnt_bot_chroot> 0: 'while 1: self.raw("PRIVMSG #esoteric :It\'s %s" % time.asctime(time.gmtime())); __import__("time").sleep(60 * 30);', 6.84 seconds
00:49:53 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
00:49:56 -!- bsmnt_bot_chroot has joined.
00:54:53 <ihope_> What are asctime and gmtime?
00:55:12 <ihope_> Ascension time and game time?
00:55:37 <ihope_> And what's the logic behind those names?
00:56:02 <ihope_> Maybe they're... um...
00:56:18 <bsmntbombdood> ~pexec self.raw("PRIVMSG #esoteric :%s" % time.gmtime())
00:56:38 <ihope_> Maybe "a" is the Spanish pronoun "a" which can mean "to", and "s" stands for "string" and "c" for "converted".
00:56:53 <ihope_> And gmtime would be like in GMT.
00:57:41 <ihope_> Or maybe asctime is short for ASCII.
01:00:27 <oerjan> that would probably be "convertado" or something.
01:01:15 <oerjan> no, it's generalissimo morte, a reference to Franco (ref. Monty Python)
01:01:53 <ihope_> Does that mean "generally dead"?
01:02:07 <oerjan> no, it means the Generalissimo is dead.
01:02:39 <ihope_> What's a Generalissimo?
01:03:21 <oerjan> There is only one Generalissimo. You do know he died not very long after the epoch.
01:03:55 <oerjan> Although to some, it seemed like an eternity.
01:07:24 <fizzie> The "gmtime" name quite likely comes from "GMT", since there's also "localtime" which returns a struct tm with the numbers in the local time zone.
01:08:20 <oerjan> but everyone knows it's called UTC nowadays. hmph.
01:08:51 <ihope_> Well, stop using ~exec~
01:09:18 <ihope_> ~pexec self.self.self.raw("JOIN #esoteric")
01:09:51 <oerjan> you could switch exec and pexec, since p can be either "public" or "privileged" as you wish.
01:10:13 <fizzie> I'm less sure about "asctime"; it might be about ascii, or the "as" might be something mysterious. After all, there's ctime() which does to time_t the same thing asctime does to a struct tm. (And the "c" _there_ is probably from "convert".)
01:10:17 <ihope_> I might well start using lots of ~pexec then.
01:10:54 <ihope_> And by that, I mean yes.
01:11:11 -!- bsmnt_bot_chroot has quit.
01:11:14 -!- bsmnt_bot_chroot has joined.
01:14:11 <ihope_> ~exec bot.exec_execer("bot.raw('PRIVMSG #esoteric foo')",(globals(),locals()))
01:15:24 <bsmntbombdood> ~exec bot.exec_execer("try:\n raise "foo",(globals(),locals()))
01:16:15 <bsmntbombdood> ~exec bot.exec_execer("try:\n raise \"foo\"\nexcept:\n print 'hi'",(globals(),locals()))
01:58:13 -!- CakeProphet has joined.
02:08:49 -!- ShadowHntr has quit ("End of line.").
02:15:53 -!- pikhq has quit (Read error: 54 (Connection reset by peer)).
02:17:36 <oerjan> I just wanted to say that.
02:19:41 -!- pikhq has joined.
02:32:26 <bsmntbombdood> come on, someone do something clever with bsmnt_bot_chroot
02:33:30 <oerjan> ~exec bot.raw("PRIVMSG :Like what?")
02:33:55 <oerjan> well that didn't work.
02:34:30 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :Like this then?")
02:44:24 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :" + argle)
02:44:41 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :" + str(argle))
02:45:08 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :" + str(argle))
02:45:37 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :Huh?")
02:46:24 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :" + str(bot.argle))
02:47:35 <bsmntbombdood> oerjan: might want to join #bsmnt_bot_chroot_errors to see your errors
02:48:07 <oerjan> ~exec bot.raw("PRIVMSG #esoteric :" + str(argle))
02:53:41 -!- CakeProphet has quit (Read error: 104 (Connection reset by peer)).
02:54:07 -!- CakeProphet has joined.
03:40:52 -!- pikhq has quit ("leaving").
04:08:33 -!- ihope_ has quit (Connection timed out).
04:45:37 -!- bsmnt_bot_chroot has quit.
04:45:40 -!- bsmnt_bot_chroot has joined.
04:48:47 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:48:49 -!- bsmnt_bot_chroot has joined.
04:50:26 -!- bsmnt_bot_chroot has quit (Client Quit).
04:50:29 -!- bsmnt_bot_chroot has joined.
04:51:14 -!- bsmnt_bot_chroot has quit (Client Quit).
04:51:17 -!- bsmnt_bot_chroot has joined.
04:52:08 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
04:52:10 -!- bsmnt_bot_chroot has joined.
05:06:03 -!- CakeProphet has quit (Read error: 113 (No route to host)).
05:15:53 -!- oerjan has quit ("leaving").
05:24:16 <bsmntbombdood> I think I figured out how to do sandboxed execution in python
05:28:42 -!- RodgerTheGreat has quit.
05:34:53 -!- ShadowHntr has joined.
05:39:39 <bsmntbombdood> exec "importing anything here is impossible" in allowed_builtins
05:40:45 <bsmntbombdood> exec "importing or opening anything here is impossible" in allowed_builtins
05:57:47 <bsmntbombdood> exec "exec 'print open(\"foo\")' in {}" in my_builtins
06:01:17 <bsmntbombdood> And exec is a statement, so that can't be taken away
06:36:43 -!- calamari has joined.
06:41:54 -!- calamari has quit ("Leaving").
07:59:59 -!- clog has quit (ended).
08:00:00 -!- clog has joined.
09:28:58 -!- ShadowHntr has quit ("End of line.").
10:39:20 -!- ihope_ has joined.
10:39:46 -!- ihope_ has changed nick to ihope.
13:35:57 -!- ihope has quit (Connection timed out).
16:22:17 -!- FabioNET has joined.
16:49:51 -!- digital_me has joined.
16:53:49 -!- tgwizard has joined.
17:18:35 -!- FabioNET has quit (Connection timed out).
17:18:45 -!- RodgerTheGreat has joined.
17:46:52 -!- FabioNET has joined.
18:22:02 -!- FabioNET has quit (Client Quit).
18:34:36 -!- anonfunc_ has quit (Read error: 110 (Connection timed out)).
19:08:28 -!- jix__ has joined.
19:10:04 -!- jix__ has changed nick to ijx.
19:10:07 -!- ijx has changed nick to jix.
19:16:28 -!- RodgerTheGreat_ has joined.
19:16:28 -!- RodgerTheGreat has quit (Read error: 54 (Connection reset by peer)).
19:16:47 -!- RodgerTheGreat_ has changed nick to RodgerTheGreat.
19:23:22 -!- ShadowHntr has joined.
19:27:41 <oklopol> http://esoteric.voxelperfect.net/wiki/PATH
19:52:17 <oklopol> http://esoteric.voxelperfect.net/wiki/BF-SC
19:52:39 <oklopol> this i don't understand, if you've got spare time, please tell me :)
19:53:03 <oklopol> ...what the silver coinage has to do with it
19:59:49 -!- ShadowHntr has quit ("End of line.").
20:19:10 -!- pgimeno has changed nick to bobot.
20:19:28 -!- bobot has changed nick to pgimeno.
20:45:04 -!- oerjan has joined.
20:54:20 -!- ihope_ has joined.
20:54:44 -!- ihope_ has changed nick to ihope.
20:56:04 -!- CakeProphet has joined.
20:59:19 <oklopol> i understand sylver coinage
20:59:26 <oklopol> not how it is related to that language
21:00:40 <oerjan> well, have you read the side effects of setting a cell, in the second paragraph under the box?
21:02:00 <ihope> Talking about BF-SC, I take it.
21:02:34 <ihope> Yeah, setting a cell is like playing it.
21:05:03 -!- Spacerat3004 has joined.
21:05:52 <oklopol> yeah, what is the relation between sylver coinage and bf-sc?
21:06:03 <oklopol> why would 6 be set if i set 3?
21:06:17 <oerjan> because it says so in that paragraph.
21:06:47 <oklopol> i thought it meant it's what automatically happens given those rules
21:07:12 <oerjan> hope that is cleared up now. :)
21:12:06 <ihope> Let's add some games together!
21:12:57 <ihope> They can be added, as long as they're of the right kind.
21:13:20 -!- bsmnt_bot_chroot has quit.
21:13:24 -!- bsmnt_bot_chroot has joined.
21:13:37 <ihope> Namely, the kind where each player has a set of moves, and each move changes the game to a different one.
21:14:17 <bsmntbombdood> ~exec self.raw("PRIVMSG #bsmnt_bot_chroot_errors :%s" % globals())
21:14:21 <bsmntbombdood> ~exec self.raw("PRIVMSG #bsmnt_bot_chroot_errors :%s" % locals())
21:14:46 <ihope> And the one who can't move loses.
21:16:21 <ihope> Rather, the player who can't move if it's that players turn. If it's your turn and you can't move, you lose.
21:16:34 <ihope> Spacerat3004: I think #irp is for that.
21:16:42 <ihope> Also, you can do this:
21:16:48 -!- ihope has set topic: #esoteric - the international hub for esoteric programming language design and deployment - map: http://www.frappr.com/esolang - forum: http://esolangs.org/forum/ - EgoBot: !help - wiki: http://esolangs.org/wiki/ - logs: http://tunes.org/~nef/logs/esoteric/ or http://meme.b9.com/cdates.html?channel=esoteric - for brainfuck-specific discussion, go to ##brainfuck - IRP ALLOWED - Pastebin: http://pastebin.ca/.
21:18:46 <ihope> So why don't we... um, hmm.
21:19:02 <ihope> Let's add * to itself.
21:20:21 <ihope> * times 2 = the player who moves third loses
21:20:51 <ihope> 0 = the first player loses, * = the second player loses, * times 2 = the third player loses, * times 3 = the fourth player loses...
21:20:58 -!- jix has quit ("Bitte waehlen Sie eine Beerdigungnachricht").
21:21:52 <CakeProphet> I'm making an esolang for the sole purpose of dealing with cause-effect chains in a MUD
21:22:03 <CakeProphet> Just cool that I'll actually be -using- it.... a lot.
21:28:59 <ihope> It'll be an esolang?
21:29:16 <ihope> Surely being an esolang is the sole purpose of an esolang.
21:30:00 <ihope> Well, I guess it depends on how you define an esolang.
21:30:25 <ihope> I'd define it as a language that's intentionally weird in some way.
21:31:53 <CakeProphet> It's going to look something like ORK with coroutines, not quite so object-oriented, not quite so verboose, and with weirder syntax.
21:32:30 <CakeProphet> Right now I'm calling it "Sophia" (It's what I call almost all of my projects)
21:36:53 -!- Sgeo has joined.
21:38:51 <oerjan> Playing with nimbers, I see
21:39:36 <oerjan> third and fourth players?
21:42:23 <oerjan> Is this something different from Conway games?
21:44:41 <oerjan> Or is it just a different way of looking at symmetric ones?
21:46:50 <oklopol> http://esoteric.voxelperfect.net/wiki/Brainloller
21:47:20 <oklopol> how the fuck do you rotate right?
21:48:12 <ihope> Right = clockwise, left = counter-clockwise.
21:49:08 <ihope> oerjan: if you have two players taking turns, third player = first player and fourth player = second player.
21:49:21 <ihope> The players who make the third and fourth moves.
21:52:18 <oerjan> right. i am used to considering all games where first player loses to be equivalent.
21:52:57 <ihope> They're not all equivalent if you want to add them together.
21:52:57 <oklopol> http://esoteric.voxelperfect.net/wiki/Brainfork
21:53:00 <oklopol> "Because Brainfork is a proper superset of Brainfuck, all Brainfuck programs are also valid Brainfork programs with identical semantics."
21:53:14 <oklopol> what about the brainfuck program Y?
21:53:24 <ihope> oklopol: except those containing Y :-)
21:53:46 <oerjan> all _stripped_ brainfuck programs.
21:54:02 <oklopol> yeah, i'm making a compendium of all bf-copies on the wiki site, if compendium means what i think it means
21:54:20 <ihope> A compendium of all whats?
21:54:25 <oklopol> yeah, i know what it meant, i don't know the use of saying that :)
21:55:16 <oerjan> adding a game that the first player loses is an identity operation as far as outcome is concerned.
21:55:25 <oklopol> brainfork duplicates the memory, right?
21:55:37 <oerjan> as long as there are two players, at least.
21:55:41 <ihope> oklopol: I don't think so.
21:55:57 <oklopol> "When a Y is encountered, the current thread forks, with the current cell being zeroed in the parent thread, and the pointer being moved one to the right and that cell set to 1 in the child."
21:56:19 <ihope> oerjan: well, if the second player can make a move, then adding it's not an identity operation.
21:56:44 <ihope> oklopol: um... uh, download the interpreter?
21:57:42 <ihope> I think each thread has its own tape pointer, but they share a tape.
21:57:50 <ihope> I mean, they have to share *something*, no?
21:58:28 -!- Spacerat3004 has quit.
21:59:01 <oklopol> just don't understand "with the current cell being zeroed in the parent thread, and the pointer being moved one to the right and that cell set to 1 in the child"
21:59:23 <oerjan> i mean the first player to move, of course. if that player loses immediately then the second player never gets to make a move.
21:59:42 <ihope> oerjan: losing is not being able to move.
22:01:24 <ihope> When simply playing a game, all games where the first player loses are the same, but not if you can add them together and such.
22:02:25 <ihope> Arithmetic, you know?
22:02:30 <oerjan> ihope: but they _are_ equivalent. note that i am saying this only for the first player, it is not true for the second.
22:03:37 <ihope> All games where the first player can't make any moves are the same from the point of view of the first player, until the second player makes a move.
22:04:29 <oerjan> i am saying this, precisely: if X is a game where the first player loses, and Y an arbitrary (symmetric) game, then X + Y has the same outcome as Y.
22:04:55 <oerjan> i.e. the same player wins.
22:05:27 <oerjan> (assuming optimal play)
22:06:59 <oerjan> monads and multiparameter type classes ftw ;)
22:07:22 <ihope> oerjan: but the second player might be able to make a move in X, which might change things.
22:07:53 <ihope> If neither player can move in X, then you have the zero game, which is an additive identity.
22:08:27 <ihope> Actually, it's *the* additive identity, I think.
22:08:43 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:08:45 -!- bsmnt_bot_chroot has joined.
22:08:59 <oerjan> well you might think that, but then the first player can just do another move to turn the X part back into losing.
22:10:13 <ihope> oerjan: yes, but that's certainly not the only thing the first player can do.
22:10:15 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:10:16 -!- bsmnt_bot_chroot has joined.
22:10:42 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:10:44 -!- bsmnt_bot_chroot has joined.
22:10:55 <oerjan> no. but if the first player wins Y, then he can win X+Y by using that strategy.
22:11:07 -!- bsmnt_bot_chroot has quit (Client Quit).
22:11:09 -!- bsmnt_bot_chroot has joined.
22:11:35 <ihope> What if after the second player makes his/her move, the first player still can't move in X?
22:12:15 <oerjan> well then the second player cannot have moved in X, because any initial move in X turns that part into winning.
22:12:17 -!- bsmnt_bot_chroot has quit (Client Quit).
22:12:19 -!- bsmnt_bot_chroot has joined.
22:13:09 <ihope> Let's say the first player is L and the second player is R.
22:13:27 <ihope> And 0 = { | }. So what about if X = { | 0 }?
22:13:40 <ihope> The second player moves once, then X is done.
22:14:11 -!- bsmnt_bot_chroot has quit (Client Quit).
22:14:13 -!- bsmnt_bot_chroot has joined.
22:14:21 <oerjan> I thought we were considering symmetric games.
22:14:53 <oerjan> where the left and right options are the same.
22:14:58 -!- bsmnt_bot_chroot has quit (Client Quit).
22:14:59 -!- bsmnt_bot_chroot has joined.
22:15:52 -!- bsmnt_bot_chroot has quit (Client Quit).
22:15:54 -!- bsmnt_bot_chroot has joined.
22:16:13 <oerjan> otherwise we need to be careful about distinguishing L and R from the first and second player to move. hmm...
22:16:27 <ihope> Well, if L moves first...
22:17:27 <oerjan> although for the particular case { | } at least, addition is exactly identity.
22:18:57 <oerjan> let's see, in X, L loses if first.
22:20:01 <ihope> Well, { | 0 } is essentially "R is allowed to pass once" when used with addition.
22:20:39 <ihope> Is { | 0 } the same as, say, { | -1/2 }?
22:20:59 <oerjan> so let N be an arbitrary loss for the first player. If L moves first in X+N, he must move in the N part, then R can again respond with turning the N part back into losing.
22:21:04 <ihope> That is, { | {-1|0} } where -1 = { | 0 }?
22:22:17 <ihope> Well... { | 0 } is "R moves", so this one's either "R moves, L moves, R moves" or "R moves, R moves". Doesn't seem the same to me.
22:23:38 <oerjan> i think they are both -1 as surreal numbers.
22:23:41 <ihope> If N is a loss for the first player, then all moves by L can essentially be countered by R, meaning N is effectively not an option for L.
22:23:54 <ihope> As the surreal numbers, yes, but I guess it's not true for games.
22:24:22 <oerjan> so they have the same outcome as a single game.
22:24:50 <oerjan> whether they are the same when added to any game i am not sure.
22:25:29 <ihope> Well, N isn't an option for L, but there is still the stuff R can do. N may allow passes, which may be an advantage for R.
22:25:39 <ihope> N certainly isn't an advantage for L.
22:26:34 <oerjan> note that N is a loss for the first player _whether that is L or R_
22:27:30 <oerjan> so essentially they both will try to avoid it.
22:27:32 <ihope> So a player can effectively move only once in N.
22:28:51 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:28:53 -!- bsmnt_bot_chroot has joined.
22:30:49 <bsmntbombdood> ~exec print getattr(sys,"stdout").__class__.__name__
22:31:44 <ihope> If a player moves in N, that player can't move again in N, but the other player can.
22:32:05 <oerjan> yes, and the other player will usually want to move N back to losing.
22:33:14 <oerjan> the only reason a player might want to move in N first is if he loses in X. but then the other player can always respond.
22:34:53 <oerjan> i think my last sentence constitutes a proof. :)
22:35:11 <ihope> I guess so. If you move in N, then... wait...
22:37:19 <ihope> Well, if neither player moves in N, then X is lost by someone, then N won't help.
22:38:31 <bsmntbombdood> print must use some kind of global version of stdout
22:38:44 <ihope> Wait... did you say N is a first-player loss?
22:39:09 <ihope> Isn't 0 the only first-player loss, then?
22:39:26 <oerjan> no, consider {{0|0}|{0|0}}
22:39:35 <ihope> Yeah, there's that, I guess.
22:40:15 <oerjan> and for symmetric games, X+X is a first-player loss.
22:40:42 <ihope> Oh, right. If one player moves in N, the other player can turn it back into another first-player loss.
22:40:51 <ihope> After all, it's a first-player loss.
22:41:17 <ihope> So are all first-player losses essentially equivalent to 0?
22:41:27 <oerjan> that's what i am saying :)
22:42:01 <bsmntbombdood> well, now we have sys.stdout going to the current channel, and sys.stderr going to #bsmnt_bot_chroot_errors
22:42:55 <oerjan> also, for surreal numbers, x + (x) is a first-player loss.
22:42:59 -!- ShadowHntr has joined.
22:43:16 <oerjan> i am not quite sure about x + (-x) in general.
22:43:54 <oerjan> in fact i have a recollection that some things break down then.
22:44:00 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:44:05 -!- bsmnt_bot_chroot has joined.
22:46:26 <oerjan> bsmntbombdood: Strange, as on python.org: "Standard output is defined as the file object named stdout in the built-in module sys."
22:46:56 <oerjan> (From http://docs.python.org/ref/print.html)
22:47:33 <bsmntbombdood> I think it is going from the real value of sys.stdout, not the value as defined in the enviroments given to exec
22:48:30 <ihope> oerjan: by x + (x), do you mean x + (-x)?
22:48:41 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:48:42 -!- bsmnt_bot_chroot has joined.
22:48:49 <oerjan> ihope: for symmetric games, -x = x
22:49:24 <ihope> Are all surreal numbers symmetric games?
22:49:32 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:49:33 <oerjan> none of them except 0.
22:49:33 -!- bsmnt_bot_chroot has joined.
22:49:34 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
22:49:36 -!- bsmnt_bot_chroot has joined.
22:49:47 <oerjan> the symmetric games correspond to the nimbers.
22:50:55 <oerjan> they are games where the situation for L and R is always the same. only who goes first matters.
22:53:38 <ihope> And nim games are sums of star games.
22:56:15 <ihope> I take it that means *1 + *2 = *3.
22:56:26 <ihope> And *1 + *1 is, of course, 0.
22:56:55 -!- bsmntbombdood has changed nick to xor.
22:57:05 -!- xor has changed nick to bsmntbombdood.
22:57:53 <ihope> Last Seen: 24 seconds ago (bsmntbombdood is online)
22:58:13 <ihope> I hope xor isn't yours, bsmntbombdood...
22:59:22 <ihope> Erm, I didn't mean to do that.
22:59:55 <ihope> I accidentally sent a memo to bsmntbombdood.
23:00:27 <ihope> And you thought nobody used those things...
23:00:34 <oerjan> oh no! now he will be infected by the corporate virus!
23:01:25 <oerjan> apologies to anyone actually working at a corporation.
23:01:28 -!- ShadowHntr has quit (Read error: 104 (Connection reset by peer)).
23:01:34 <ihope> What's it say, bsmntbombdood?
23:01:56 <ihope> And the other one?
23:02:12 <ihope> I sent one to xor, too. :-)
23:02:18 -!- bsmntbombdood has changed nick to xor.
23:02:46 <xor> You're bsmntbombdood, then?
23:03:03 -!- xor has changed nick to bsmntbombdood.
23:04:09 <ihope> Now, what does multiplication mean for games?
23:06:48 <oerjan> i don't think multiplication makes sense outside the surreal numbers. But i never got around to really understanding it.
23:07:35 <oerjan> basically i think the ordering of the subgames plays an essential role, which means only surreals work.
23:10:45 <oerjan> or it may have been something about multiplication not preserving the equivalence we have just discussed.
23:17:15 -!- RodgerTheGreat has quit (Read error: 104 (Connection reset by peer)).
23:17:50 -!- RodgerTheGreat has joined.
23:18:34 -!- RodgerTheGreat has quit (Remote closed the connection).
23:19:07 -!- RodgerTheGreat has joined.
23:20:41 -!- RodgerTheGreat has quit (Remote closed the connection).
23:21:22 -!- RodgerTheGreat has joined.
23:30:52 -!- RodgerTheGreat has quit (Remote closed the connection).
23:31:32 -!- RodgerTheGreat has joined.
23:31:41 <CakeProphet> paticularly... one that supports Python stuff?
23:34:20 <oerjan> Alas, I just use gVim (an editor) + WinHugs (for Haskell only)
23:43:20 -!- bsmntbombdood has left (?).
23:43:25 -!- bsmntbombdood has joined.
23:49:24 -!- tgwizard has quit (Remote closed the connection).
23:55:21 -!- bsmnt_bot_chroot has quit (Remote closed the connection).
23:55:25 -!- bsmnt_bot_chroot has joined.