@ Pohon BBS

Last 25 posts

3. tripex 1.2
Published: 2025-01-07 [Tue] 05:24, by taocana◆PhREAk.tEk
>>2
tripex 1.2 release notes
+ -f flag to read a list of expressions from a file
* -s flag now takes an argument for when to begin/end stacking. negative values mean to stop stacking after the absolute value of the index.

apply the patch as follows (make sure to apply the previous patch first:)
patch tripex.c tripex-1.2.patch

then recompile the software as follows:
gcc tripex.c -o tripex -O3 -lcrypt

here's an example of the new features combined for efficient dictionary searches.
because expressions from argv are parsed after files, we have to put our first expression in it's own file :(.
'-s -1' means to stop stacking after the first expression, so it will first check if it is even possible to match with any of the dictionary expressions.

aspell -d en dump master | grep "^[a-z]\{5,5\}$" > len5dict.txt
echo "[a-z]\{5,5\}" > 5a-z.txt
./tripex -n $(nproc) -s -1 -f 5a-z.txt -f len5dict.txt

-----BEGIN FILE tripex-1.2.patch-----
13a14
> #define MAX_EXPRS 262144
18a20,23
> /* if i put this garbage on the stack instead of bss, it will segfault. */
> size_t n_exprs = 0;
> regex_t exprs[MAX_EXPRS];
>
21c26
< fprintf(stderr, "usage: tripex [-Ehilnmsv] expressions\n"
---
> fprintf(stderr, "usage: tripex [-Ef:hil:n:m:s:v] expressions\n"
22a28
> " -f\tread expressions from file (use '-' for stdin)\n"
28c34,46
< " -s\tstack expressions (logical AND)\n");
---
> " -s\tstack (logical AND) expressions before/after expr #n (negative for before)\n");
> }
>
> void appendExpr(regex_t exprs[], size_t *i, char *str, int re_flags)
> {
> /* avoiding malloc like the plague, simple and fast shitware!
> * if you somehow need more than MAX_EXPRS, change it & recompile.
> */
> if (*i >= MAX_EXPRS)
> errx(EXIT_FAILURE, "no %s-kun! it's too many exprs, it wont fit!", getlogin());
> if (regcomp(&exprs[*i], str, re_flags))
> errx(EXIT_FAILURE, "failed to compile regex '%s'", str);
> (*i)++;
34a53
> long stack_after = 0;
40c59
< while ((opt = getopt(argc, argv, "E:hil:m:n:sv")) != -1) {
---
> while ((opt = getopt(argc, argv, "E:f:hil:m:M:n:s:v")) != -1) {
44a64,81
> case 'f':
> FILE *fp = stdin;
> if (strcmp(optarg, "-") != 0)
> fp = fopen(optarg, "r");
> if (!fp)
> err(EXIT_FAILURE, "couldn't open regex file '%s'", optarg);
>
> char *line = NULL;
> size_t len = 0;
> ssize_t nread;
> while ((nread = getline(&line, &len, fp)) != -1) {
> *strchr(line, '\n') = '\0';
> appendExpr(exprs, &n_exprs, line, re_flags);
> }
>
> free(line);
> fclose(fp);
> break;
64a102
> stack_after = atol(optarg);
67c105
< printf("tripex 1.1 by taocana\n");
---
> printf("tripex 1.2 by taocana\n");
73d110
<
81c118,121
< if (argc < 1) {
---
> for (size_t i = 0; i < argc; i++)
> appendExpr(exprs, &n_exprs, argv[i], re_flags);
>
> if (n_exprs < 1) {
86,91d125
< size_t n_exps = argc;
< regex_t *exps = malloc(sizeof(regex_t) * n_exps);
< for (size_t i = 0; i < n_exps; i++)
< if (regcomp(&exps[i], argv[i], re_flags))
< errx(EXIT_FAILURE, "failed to compile regex");
<
97c131
< unsigned char key[key_len + 1]; /* dynamic array, bad form but i'm lazy */
---
> unsigned char key[key_len + 1];
100c134
< for (size_t n = 0; !max_tries || n < max_tries ; n++) {
---
> for (size_t n = 0; !max_tries || n < max_tries; n++) {
111,113c145,151
< for (size_t i = 0; i < n_exps; i++)
< if (regexec(&exps[i], trip, ARRAY_SIZE(pmatch), pmatch, 0))
< if (sflag)
---
> for (size_t i = 0; i < n_exprs; i++) {
> int stacking = (sflag
> && ((stack_after >= 0 && i >= stack_after)
> || (stack_after < 0 && i < -stack_after)));
>
> if (regexec(&exprs[i], trip, ARRAY_SIZE(pmatch), pmatch, 0))
> if (stacking)
117c155
< else if (!sflag || i >= n_exps - 1)
---
> else if (!stacking || i >= n_exprs - 1) {
118a157,159
> break;
> }
> }
123,125c164,165
< for (size_t i = 0; i < n_exps; i++)
< regfree(&exps[i]);
< free(exps);
---
> for (size_t i = 0; i < n_exprs; i++)
> regfree(&exprs[i]);
134a175
> /* unsigned for array lookups by character */
152c193
< if (!code)
---
> if (!code) /* doesn't fully handle crypt_r(3) errors yet */
.
11.
Published: 2025-01-06 [Mon] 11:09, by 0Vpj1WCu5o
古 蛙 水
池 飛 の
や 込 音


.
2. tripex 1.1
Published: 2025-01-05 [Sun] 06:05, by taocana◆PhREAk.tEk
version 1.1, cryptography patch.
i forgot to audit the cryptography; i made a huge boneheaded mistake
with the key filter (thing that turns pure random bytes into printable
ascii) where it was skewing a lot. now it uses an 85 character subset
(256 % 85 = 1) which has a very tiny amount of skew but doesn't lose
as much entropy as an unskewed 64 character subset of ascii would.
the default key length is also increased to 10, so that it would be
~64 shannons of entropy total (a tripcode has 60 shannons.)

here is the patch file, apply it to the original as follows:
patch tripex.c tripex-1.1.patch

then recompile the program as follows:
gcc tripex.c -o tripex -O3 -lcrypt

-----BEGIN FILE tripex-1.1.patch-----
36c36
< size_t key_len = 8;
---
> size_t key_len = 10;
67c67
< printf("tripex 1.0 by taocana\n");
---
> printf("tripex 1.1 by taocana\n");
167a168,175
> /* we must get printable ascii from a random byte,
> * but 256 % 94 = 68 which leaves too much skew.
> * quantizing into 64 chars won't skew at all, but
> * it only has 6 shannons of entropy per character.
> * an 85 character quantization only skews by a
> * remainder of one, which is miniscule enough and
> * we average 6.41 shannons per character.
> */
169,176c177,192
< "{dDOFByx8Jdo=C.{hFw:'p%m+]E-*}~4"
< "O)YiM99y?%A)tldRIN4!fat`J|(iI+}h"
< "]59P#T_Qx#h0q8w+F,$}Vo5Gq;<rw]Y~"
< "k6>O~Ge,.DW9`hqhaSf#A.vrnhy`[2Ct"
< "Bb6|7Mr+iJZG5.&7>?K@{D~6*Vs'H_*>"
< "$Mh3R-F$Sp^.E5R-W1DnQzXC@Tf']xxt"
< "o`GLO'Ui`S/v,aegU2HkE3Y6y!WZm%?k"
< "aD/H=yH4vQg7dC*(Gx$vV[<vV?jw8s^d";
---
> "!#$%&'()*+,-./012"
> "3456789:;<=>?@ABC"
> "DEFGHIJKLMNOPQRST"
> "UVWXYZ^abcdefghij"
> "klmnopqrstuvwxyz~"
> "!#$%&'()*+,-./012"
> "3456789:;<=>?@ABC"
> "DEFGHIJKLMNOPQRST"
> "UVWXYZ^abcdefghij"
> "klmnopqrstuvwxyz~"
> "!#$%&'()*+,-./012"
> "3456789:;<=>?@ABC"
> "DEFGHIJKLMNOPQRST"
> "UVWXYZ^abcdefghij"
> "klmnopqrstuvwxyz~"
> "~";
.
1. tripex tripcode finding software
Published: 2025-01-05 [Sun] 00:04, by taocana◆PhREAk.tEk
releasing version 1.0 of my tripcode finding program, 'tripex'

compile the program as follows:
gcc tripex.c -o tripex -O3 -lcrypt

example #1; find tripcodes containing 'nice' (case insensitive):
./tripex -n $(nproc) -i nice

example #2; find tripcodes starting with either 'giko' or 'mona':
./tripex -n $(nproc) ^giko ^mona

example #3; find fully lowercase tripcodes with quads:
./tripex -s -n $(nproc) "^[a-z]*$" "\(.\)\1\{3,\}"

untested on anything but GNU/Linux with glibc, but it would probably work on FreeBSD too.
don't trust any update posts unless they have my tripcode or you can audit them yourself!

-----BEGIN FILE tripex.c-----
/* CC0-1.0 */

#include <err.h>
#include <crypt.h>
#include <regex.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <unistd.h>

#include <sys/random.h>

#define ARRAY_SIZE(x) (sizeof((x)) / sizeof((x)[0]))

static unsigned char saltFilter[256];
static unsigned char rngFilter[256];
char *tripcode(const char *key);

void usage(void)
{
fprintf(stderr, "usage: tripex [-Ehilnmsv] expressions\n"
" -E\tuse extended regular expressions\n"
" -h\tshow usage\n"
" -i\tignore case\n"
" -l\tkey length\n"
" -n\tnumber of threads\n"
" -m\tmax number of tries (per thread!)\n"
" -s\tstack expressions (logical AND)\n");
}

int main(int argc, char *argv[])
{
int re_flags = 0;
int sflag = 0;
size_t n_procs = 1;
size_t key_len = 8;
size_t max_tries = 0;

int opt;
while ((opt = getopt(argc, argv, "E:hil:m:n:sv")) != -1) {
switch(opt) {
case 'E':
re_flags |= REG_EXTENDED;
break;
case 'i':
re_flags |= REG_ICASE;
break;
case 'l':
key_len = atol(optarg);
if (key_len < 1)
errx(EXIT_FAILURE, "key length must be at least 1");
break;
case 'n':
n_procs = atol(optarg);
if (n_procs < 1)
errx(EXIT_FAILURE, "need at least one process");
break;
case 'm': /* ! PER THREAD ! */
max_tries = atol(optarg);
if (max_tries < 1)
errx(EXIT_FAILURE, "need at least one try");
break;
case 's':
sflag = 1;
break;
case 'v':
printf("tripex 1.0 by taocana\n");
return EXIT_SUCCESS;
case 'h':
/* FALLTHROUGH */
default:
usage();

return EXIT_FAILURE;
}
}

argc -= optind;
argv += optind;

if (argc < 1) {
usage();
errx(EXIT_FAILURE, "need at least one expression");
}

size_t n_exps = argc;
regex_t *exps = malloc(sizeof(regex_t) * n_exps);
for (size_t i = 0; i < n_exps; i++)
if (regcomp(&exps[i], argv[i], re_flags))
errx(EXIT_FAILURE, "failed to compile regex");

for (int i = 1; i < n_procs; i++)
if (!fork())
break;

regmatch_t pmatch[1];
unsigned char key[key_len + 1]; /* dynamic array, bad form but i'm lazy */
key[key_len] = 0;

for (size_t n = 0; !max_tries || n < max_tries ; n++) {
if (getrandom(key, key_len, 0) < 0)
err(EXIT_FAILURE, "failed to get random key");

for (int i = 0; i < key_len; i++)
key[i] = rngFilter[key[i]];

char *trip = tripcode(key);
if (!trip)
err(EXIT_FAILURE, "failed to generate tripcode");

for (size_t i = 0; i < n_exps; i++)
if (regexec(&exps[i], trip, ARRAY_SIZE(pmatch), pmatch, 0))
if (sflag)
break;
else
continue;
else if (!sflag || i >= n_exps - 1)
printf("%s %s\n", trip, key);

free(trip);
}

for (size_t i = 0; i < n_exps; i++)
regfree(&exps[i]);
free(exps);
return EXIT_SUCCESS;
}

char *tripcode(const char *key)
{
/* we don't do any sjis conversion, but who cares anyway? */
if (strlen(key) == 0)
return NULL;

unsigned char *tempKey = malloc(strlen(key) + 2);
if (!tempKey)
return NULL;
strcpy(tempKey, key);
strcat(tempKey, "H.");

unsigned char salt[3];
for (int i = 0; i < 3; i++)
salt[i] = saltFilter[tempKey[i+1]];
salt[2] = 0;
free(tempKey);

struct crypt_data data;
bzero(&data, sizeof(struct crypt_data));

char *tempCode = crypt_r(key, salt, &data);
unsigned char *code = malloc(strlen(tempCode) - 3);
if (!code)
return NULL;
strcpy(code, tempCode + 3);
return code;
}

static unsigned char saltFilter[256] =
"................................"
".............../0123456789......"
".ABCDEFGHIJKLMNOPQRSTUVWXYZ....."
".abcdefghijklmnopqrstuvwxyz....."
"................................"
"................................"
"................................"
"................................";

static unsigned char rngFilter[256] =
"{dDOFByx8Jdo=C.{hFw:'p%m+]E-*}~4"
"O)YiM99y?%A)tldRIN4!fat`J|(iI+}h"
"]59P#T_Qx#h0q8w+F,$}Vo5Gq;<rw]Y~"
"k6>O~Ge,.DW9`hqhaSf#A.vrnhy`[2Ct"
"Bb6|7Mr+iJZG5.&7>?K@{D~6*Vs'H_*>"
"$Mh3R-F$Sp^.E5R-W1DnQzXC@Tf']xxt"
"o`GLO'Ui`S/v,aegU2HkE3Y6y!WZm%?k"
"aD/H=yH4vQg7dC*(Gx$vV[<vV?jw8s^d";
.
2.
Published: 2024-12-30 [Mon] 04:25, by Moon
I don't like it at all but a drop/get all button would be an ok solution
if too many people like the feature
.
1. Streams open by default
Published: 2024-12-30 [Mon] 04:17, by Archduke
As a limited experiment, all streams are open by default when you
join. How do you feel about this? Is it good or bad? Should there be
a button somewhere to open/close all streams?

I prefer if you share your opinions with your name so I can go with
what the community wants, per this issue. Thank you and happy holidays
.
1. merp!
Published: 2024-12-26 [Thu] 00:07, by Anonymous
merp merp merp merp merp merp merp merp merp merp merp merp merp merp
merp merp merp merp merp merp merp merp merp merp merp merp merp merp
merp merp merp merp merp merp merp merp merp merp merp merp merp merp
.
2.
Published: 2024-12-22 [Sun] 17:09, by archduke
Glad you're alive boardsmin!

I don't think anyone here has your email address, but come play Gikopoi
before the end of the year if you can :) I'm sure there'll be quite a
few people showing up between Christmas and New Years

wishing you well
.
1. hello, old friends ^___^
Published: 2024-12-20 [Fri] 09:08, by jax
doubt anyone remembers me around this corner
of the internet anymore, but im indeed still
around!! just lurking now

can't beleaf it's been almost 8 months (?)
since i last posted on one of these BBSes... i
guess im posting here specifically because of
its memorable-ness???? time flies man!!!!! i
recently got into baking, i made a really good
strawberry cake yesterday. im also an
alcoholic now #lifesgood

boards is still alive-iiiishhh, and it's about
to turn a year old!! ive moved on to newer
things, though. pikidiary is my new
microblogging site, heavily inspired by its
boardsian roots. much more normie-y, but still
fun.

anyways, i miss a lot of y'all!! email me if
you know who i am (⁠*´⁠︶`⁠) cya around!!!!
.
9.
Published: 2024-12-16 [Mon] 18:48, by Anonymous
Does The Sixth Sense count? me and waifu saw that recently and we had a
lot of fun. Kind of a horror movie, kind of a detective movie... make
sure to watch it without spoilers :)
.
25.
Published: 2024-12-05 [Thu] 17:45, by Anonymous
Recently produced ~12 liters of "low wines" from sugar washes.

Biggest game changer in my fermentation for distillation lately:
I add a tablespoon or two of diammonium phosphate and tiny pinch of
magnesium sulfate per ~20L of ferment I do. Seems to make a pretty
big difference: ferments go faster and cleaner.

Picked up about 200g of baking soda (sodium bicarbonate) today and
converted it to washing soda (sodium carbonate) by throwing it in a
saucepan on the stove at a low heat and constantly stirring. Sure
enough, I could see the powder "boiling" -- despite wearing a face
mask, some funky smells came through. After about 20 minutes or so,
the texture of the powder appeared to change, and the powder seemed to
stop reacting.

Spilled a little in the process. Post-cook weight of sodium carbonate
was about 120g which is consistent with the theory.

Tomorrow I'll be throwing my 12 liters of "low wines" into the pot still
with 3-4 liters water and 4 tablespoons of washing soda. This should
result in a large volume of hearts, which will be turned into... gin!
this Saturday.

Stay tuned for updates.
.
3.
Published: 2024-12-01 [Sun] 14:55, by Anonymous
tes
.
2.
Published: 2024-11-18 [Mon] 02:18, by Anonymous
Set up an XMPP server too. Contact me on Matrix or somewhere else for
an account, if interested.
.
27.
Published: 2024-11-18 [Mon] 00:43, by PhatCat
[2024-11-18 00:38:14] gyudon_addict◆hawaiiZtQ6: persist this cock, persist these balls
.
1. Matrix server launched
Published: 2024-11-17 [Sun] 15:51, by @archduke:gikopoi.com
In the past I have hosted matrix-synapse servers on multiple
occasions; resource consumption was always the limiting factor that
led me to pull the plug on them. Maybe someday I'll launch an XMPP
server. Until then, please enjoy using our matrix-conduit server.
Say hi in #lounge:gikopoi.com or swing by the #relay:gikopoi.com room
to chat with our discord and irc friends.
.
26.
Published: 2024-11-15 [Fri] 13:38, by Anonymous
Archduke: what caste is your gf
.
10.
Published: 2024-11-14 [Thu] 21:25, by Anonymous
zzazzachu: >ginsberg
zzazzachu: crooooooooognge
zzazzachu: slam poetry tier shite
zzazzachu: life is shit, capitalism. sucking cock. the material world.
zzazzachu: - "The World" zzazzzachu

zzazzachu: caravans, moving homes
zzazzachu: the hum of the diesel engine
zzazzachu: the sound of freedom
zzazzachu: I take a drag
zzazzachu: - "The FreeHum" zzazzachu

zzazzachu: in summary, ginsberg is shit and anyone can write that fake deep garbage
zzazzachu: he's a total fraud
.
8.
Published: 2024-11-05 [Tue] 20:02, by Anonymous
El Topo is a good one - a psychedelic Western released in 1970.

It's about a gunslinger in a nameless desert searching for enlightenment. The
movie deals heavily in Western and Eastern spiritual symbolism and philosophy.
A lot of bizarre occurences and characters - the movie at parts is very surreal
and almost comedic and in others is dramatic or very violent.

It's been watched by and has inspired a lot of creatives and in my opinion
should be watched at least once by anybody who says they enjoy cinema.
.
4. (optional)
Published: 2024-11-02 [Sat] 08:40, by Anonymous
in nostr
- if Relay & Client go offline, where is content hosted?
- Relay stores content. Does it store entire archive of whole network? And able to read and see data stored & who posted what. Or be flooded.
- nostr seems like can't run decentralized sql, same poroblem of web3, ipfs (thats hosts only static content)
.
4.
Published: 2024-10-30 [Wed] 22:53, by Anonymous


                          /                         ヽ
                         /              /i                 ヽ         ___
                       /             / .!     1             '、      _/ : : `:>
                   /          i.  ! |       |、          i      Yi:ー==く
                     /              |  l, 1     | 、    、1    1     __,ノ ゝ=='7’
                      /            i _l,L..、ヽ ヘ    '''T'弋-.   V|     } ,>'''^´      ' 、
                    ' ,ィ     i   .ィ7´ハ.   \ヽ     } 丶 i、  i|    /::´-‐:::.::::::.:::.:::ー-:..ヽ
                   /./ |    |   /}∥ マi、    `'ゝ り   ヽ ト、 i}   .∥:::.:::.:::.:::.:::.:::.:::.:::.:::.:::.::ハ
                  /   |    1  / リ    i\ i   ./リ _,,..、、,ユi_ヽi}.  ∥__:::.:.::: :::.:::.:::.:::.: ::.:::.:::.}
                 '´     |     l.../ _ムxr=ュミト ヾ`ーゝノ゙斤^::心 `》j!  ∥    ̄`^,,, ‐- 、:::.:::.:::.:::j
                      {     Yィi^ .わ^n;::h ´      {T::.゚:::ノ'} '/   ∥             `''ヾ7
                      1       い い、::゚ィリ         ヾニ=‐′/ ,ィ∥               .′
                       }.  ヽ   '、  `'ー‐'゚     ,     , , , //..,/)                 '
                       l'、   \ '、 , , , ,               '´ /i/./''フ         ┌v'^!
                       | ゙、    .弋^        _,.._        .'/´,.ィ'´'"_フ       ,, fヘ, l V {
                       } ヽ    ト .>       (.  )      イ7/_r≠'^フ     r、人 ヾ. V}
                        } i. ヘ,   |  i>.、,_           ,..イ... / / ,.ィ'''~        ヘ、`ミi, Y .}!
                     :! | 'ミ=k,_,{ィ亥 | ...i:`:ト-    - '^.{.....i.. 7  /            ,\ ヽ V〈
                       j! } <少'^トミミk.j  ,:r‐'1      | ̄`V  ,F'''':::ー:...、,__      ` \   }
                   ' '7 '″.| Y:_,...ノ≠  V'}       ^''1∥  ∥:::.:::.::.:::.:::.:::.  ̄``:-.、,_ ./   .′
                     / /7 _,.x‐|  1        ヽ       | i  ∥:::.:::.:::.:::.:::.:::.:::.:::.:::.:::.::::;;/    j
                     / / jィニh、|   '、        ヽ ,....、 .r‐‐j7   {-ー-::.、,_:::::.:::.:::.:::.:::.:::;:;/    j
                 / / /二ニニ{   トx.        ヘ    √く,_  `'7-=、:::.:::.``丶:、:_:.:::;:;{    jL.、 .
. .
.
6.
Published: 2024-10-30 [Wed] 22:46, by Anonymous
weird, cuz gikopoi works only with JS turned ON.
And normies in tor don't want it.
>(yet mentally ill)
don't automatically assume everyone else is diagnosed with same stuff as you.
in the era of mass survelliance (IDK HOW TO SPELL IT CORRECTLY ! SIC , me being retarted) , wars, oppression, geo locks ... many people flow towards tunnels / anonymity / privacy
.
5.
Published: 2024-10-30 [Wed] 22:38, by Anonymous
it allows to spread the honest truth - which is valuable
without being persecuted for it - which is very valuable

>Anonymity lowers the barrier to entry
it doesn't. it may require registration, and darknets+floss aren't easy nor popular.

The main purpose of imageboards is said in my first 2 lines, which was formed by og Strange World ayashii author. You don't know history, you vernacular grug. Look at eternal summer, eternal september and how BBS spawned out of usenet groups.

Chelsea Manning playing water polo in pool full of tears reading your shitpost.

>Anonymous communities have no means by which to gatekeep
they have, sometimes, iq captcha. Your post not passing it, do better, always strive for better.
.
5.
Published: 2024-10-29 [Tue] 19:23, by t^_^
for those that don't already know, the tor ban has been reinstated after
spammers abused in the game. i can't shake the unfounded feeling this
has something to do with recent harassment of tor relay operators. the
attacker is port scanning honeypots with spoofed source addresses of the
relays to get abuse reports sent.

https://gitlab.torproject.org/tpo/network-health/analysis/-/issues/85

concerted effort to get tor banned everywhere? who's to say.
.
3.
Published: 2024-10-28 [Mon] 17:01, by Anonymous
>>2
n i n n & F I ( S
o t o o e a o
s s s w e d n r
t m t t h l o d r
r a r r a s n y
y t ' O
j i m l t h i
u p s a " i , f
s o y R k n
t s n e e e b m
s o s l e t e
p e t e a t d w
r s e y h b
e s m " e t d e
v s e r w o i
e a r l i e i n n
n m v i s t ' g
t e e k a t t
s r e j r e a
u l u e r u
s n e s s s b
p r s l t m a e i
a e s i o n t
m s , g r r a c
o h e e l e d
i l n t i o n o
s v o l n f g t w
s e r y c u u r n
u d a n e a e
e p p r d , l r
p 2 o n a i
& r p l a m z o
o . i t e I e n
a b s i n d
d l a h o t n n
d e n e n a e p o
s m d l e r s
s n o s d o t
t o r f p r
r o s e t p r .
u f t b e h 2 i
s r i c a p e
t i r h t t
p r t o j a
t f e h n i r
o s l m e r y
/ a o a e a
t w y f i d . g
h e l !
e b w w i t t
3 h e n o h
e . o b g u
q 3 l b b
u " i e )
a h p s .
t o o t r
i s i e
o t n c s
n s t o o
. " n l
2 f v
c e e
l o r d
i r r .
e e
n s n S
t c c p
u e a
c t . m
o t
n l i
t e s
e b
n u n
t t o
t t
m .
a t
y h
e
g
o #
1
o
f b
f i
l g
i g
n e
e s
. t

i
s
s
u
e

i
n

t
h
e

b
l
o
c
k
.

T
h
e

u
s
e
r

i
n
v
o
l
v
e
m
e
n
t

i
s
.

B
B
S

d
o
n
'
t

h
a
v
e

e
n
o
u
g
h

u
s
e
r

c
o
n
t
r
i
b
u
t
e
d

c
o
n
t
e
n
t
.
.
Pohon BBS