From 18648c6a7e93868038baaeba73a39f78a0904158 Mon Sep 17 00:00:00 2001 From: adevopg Date: Thu, 16 Jul 2026 12:38:21 +0000 Subject: [PATCH] Foro: avatares por clase del personaje principal MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Los avatares salían vacíos (el original usaba getAvatar, que no teníamos). Ahora cada post muestra el avatar de FusionCMS correspondiente a la CLASE del personaje de más nivel de la cuenta que postea, usando datos reales de acore_characters. - Se descargan 10 avatares (uno por clase jugable en WotLK 3.4.3: 1..9 y 11) a public/forum/avatars/class-.gif. - resolvePosters() consulta la clase del personaje top de cada cuenta y mapea a su avatar; sin personaje (o acore_characters vacía) cae a guerrero por defecto. - La página de tema pinta el avatar en el recuadro lateral. Nota: la tabla characters de AzerothCore usa `guid` como clave (no `id`); ordenar por `id` lanzaba error y devolvía siempre el avatar por defecto. Corregido. Verificado en producción: una cuenta con Paladín de nivel máximo muestra class-2.gif. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../[locale]/forum/topic/[topicId]/page.tsx | 7 +++- web-next/lib/forum.ts | 38 +++++++++++++++++- web-next/public/forum/avatars/class-1.gif | Bin 0 -> 4010 bytes web-next/public/forum/avatars/class-11.gif | Bin 0 -> 3907 bytes web-next/public/forum/avatars/class-2.gif | Bin 0 -> 3612 bytes web-next/public/forum/avatars/class-3.gif | Bin 0 -> 3647 bytes web-next/public/forum/avatars/class-4.gif | Bin 0 -> 3901 bytes web-next/public/forum/avatars/class-5.gif | Bin 0 -> 3889 bytes web-next/public/forum/avatars/class-6.gif | Bin 0 -> 5012 bytes web-next/public/forum/avatars/class-7.gif | Bin 0 -> 3832 bytes web-next/public/forum/avatars/class-8.gif | Bin 0 -> 3666 bytes web-next/public/forum/avatars/class-9.gif | Bin 0 -> 3539 bytes 12 files changed, 43 insertions(+), 2 deletions(-) create mode 100644 web-next/public/forum/avatars/class-1.gif create mode 100644 web-next/public/forum/avatars/class-11.gif create mode 100644 web-next/public/forum/avatars/class-2.gif create mode 100644 web-next/public/forum/avatars/class-3.gif create mode 100644 web-next/public/forum/avatars/class-4.gif create mode 100644 web-next/public/forum/avatars/class-5.gif create mode 100644 web-next/public/forum/avatars/class-6.gif create mode 100644 web-next/public/forum/avatars/class-7.gif create mode 100644 web-next/public/forum/avatars/class-8.gif create mode 100644 web-next/public/forum/avatars/class-9.gif diff --git a/web-next/app/[locale]/forum/topic/[topicId]/page.tsx b/web-next/app/[locale]/forum/topic/[topicId]/page.tsx index 827c18b..6c316be 100644 --- a/web-next/app/[locale]/forum/topic/[topicId]/page.tsx +++ b/web-next/app/[locale]/forum/topic/[topicId]/page.tsx @@ -101,7 +101,12 @@ export default async function TopicPage({ {author?.name ?? `#${post.poster}`}
- +

diff --git a/web-next/lib/forum.ts b/web-next/lib/forum.ts index e8d1913..c752936 100644 --- a/web-next/lib/forum.ts +++ b/web-next/lib/forum.ts @@ -85,6 +85,16 @@ export interface PosterInfo { isStaff: boolean joindate: string | null postCount: number + avatar: string +} + +// Avatar por clase (FusionCMS) del personaje de más nivel de la cuenta. Solo clases +// jugables en WotLK 3.4.3 (1..9 y 11). Sin personaje → guerrero por defecto. +const AVATAR_DIR = '/forum/avatars' +const AVATAR_CLASSES = new Set([1, 2, 3, 4, 5, 6, 7, 8, 9, 11]) +function avatarForClass(classId: number | undefined): string { + const c = classId && AVATAR_CLASSES.has(classId) ? classId : 1 + return `${AVATAR_DIR}/class-${c}.gif` } /** Nivel GM mínimo para considerarse «staff» en el foro (badge y color). */ @@ -362,6 +372,23 @@ export async function resolvePosters(ids: number[]): Promise '?').join(',') + + // Clase del personaje de más nivel de cada cuenta (para el avatar). Se tolera que + // acore_characters no exista o esté vacía: el avatar cae a guerrero por defecto. + const classByAccount = new Map() + try { + const [chars] = await db(DB.characters).query( + `SELECT account, class FROM characters WHERE account IN (${placeholders}) ORDER BY level DESC, guid ASC`, + unique, + ) + for (const c of chars) { + const acc = Number(c.account) + if (!classByAccount.has(acc)) classByAccount.set(acc, Number(c.class)) + } + } catch { + /* sin personajes: avatar por defecto */ + } + try { const [accs] = await db(DB.auth).query( `SELECT id, username, joindate FROM account WHERE id IN (${placeholders})`, @@ -383,6 +410,7 @@ export async function resolvePosters(ids: number[]): Promise= STAFF_GMLEVEL, joindate: a.joindate ? new Date(a.joindate).toISOString() : null, postCount: 0, + avatar: avatarForClass(classByAccount.get(Number(a.id))), }) } } catch { @@ -391,7 +419,15 @@ export async function resolvePosters(ids: number[]): PromiseE zqB|pSx$4b#k#`TqXe*Xa4ix_W&EeM?TghW zvR)o7I;!yF%q#BSu6TT`^y!VIs)1|1zKehQZtQ5~+>Ugs$ETt?S!**|y;#HnUv7`ymAl~f)f2TA_dSe;RZPG0RkzOP9x3ulTyv7ZwX8S$yq35s9nxmE1N zoIdo+NX^J#-F#{80d`RYzAW#1!}Kdg*%}MV z3f7#a{huD7zPta~?E!z&cTb-06+|R?%OwKgA1L?-zkl>k6F|(+^VRhlb#!m) zLO5CkM%p1bU};#%QhRQIb&0i~zsS0JX#li{n6c5caavYPS9=T; zaN`CHd3hxUR9BOEeyVC~Ym#;1)R_zC=3ltjaw*P*)t176VqO}wF&x&F0DIj7#6N?4 z5P(Fo(SJ|nKlm(~*4w#xA7q->p={eK7KyU-;tvtb@Z)dG8g{Uw zN)!^cV0-szWtrPoV%`vUbBFH>pWAka+gy`pmT{;*gP{|O?@^dtkr&mm zt3c-Na-Q*-l?Mj1;J{OPI?S3A;lG9Psa}4UcFC-m^wj46k}1uWF$+RpXd1^dEEe88 zmF;I)u{23AB-k26geslR^H&ZwY)e&{#QMlw3&<||uvc7VHvb@O(c&SBR^`4N#3Eh5 z1$mfZ@#uc%0Fg1$_O}NQ)p%alu3p?Ll#<#YCp#Lm=GiO0wZ537q^+GqUeA`l5M5lk z`MO=b-g5{Akc+>7>zd8=KPQ%qr8jD&zH7!7cco9TYJ!X&oyNvHx)Dv#f|>DV#BA?r2W_6NC3=8tH@$3_GbOGu7V zGF!TpI(B4}NfwKHpbSBD<<2_759g@Xa?^ZA@*D-cuvI%kM&DX4vhRQ0S4y%Zg|iE` z>S(yYB#6S-%Sp&JZ&20KrA~i+&p#-DwXVP^O7czjnviuGZcpd}`sk&6-=B^+%4uY{ zfDhFNll{t`%EPIv1;^87E2Y80jy(TnmuAJ}$$(zvPQcN%TqmSstDDYPY&8Sxf?UCv zEk|KQX3+onG4~6PEa@{jw{7Du8_y`dBwGe?^eYXV;Bo`uXfo?Zuhj?)gZ;0*RVPbo745R&5n1nXe87GTcl|J$?h^#$@KcHnt!AKQ;(&_CaN+c~nbE=)7l z#8TWYn#v1Z@x1t2uby^Z+{T4Tm9nf3o_7Gc&Wo)Ofcv6;3Wv|n8FjD-A6KboFqTsG z;??Jdd%^du^1E`MI4d`4ID%p!GFG4w#W+@-WcniA#P#g6Pc3||ct}{sSgSkU&icah zNFB39)*%OwC8g(lYEpB8NpB}q2Su0>XDKNh!j$xuKVzM&S$!G~fDF}7mtVbpd|1O$ zWyPmrTTECGCFDfV^&Cp62@5t^d1`4ikfh)Bi&0NgCOnuUMh*F_E`Fk+&CYc!{jS%w zSt)6Eb_r*JIy^D1iJJ?WEOTkg*~}BCMMlJ}8GuN!)Pg6zVV^M{S~wZ2k_+f5WA2)3 zMmoFy;i$fY+pLb_pk|k$_zc)t{)b$5=8dwLQglL&6Tjx zg=Q{YGG(BxP(bXPNoeFqNrI!=WOYYTU~w}cL6=>jz-(6pJV|Mbl^vwW4;sYf?Z5is z^xoIwVn7^Im)~|8%F!CO2pGrVK^j8IA8yKKAqsz(|M3IYkl~f~{MRo~MZfRFE5>Gh zM9vvMmDKjP`X*OC4|;ofI^p!!lag=sES?U97m-aYk>Ir56#ceCtFhKniL!H}OOI|G zc73nMM3csvw(zg)R!p4aTgi@%Y8&pTQ;Xi^;(q4$d6`=cF{ z{P`$#X)%zNbpm2e(u#KD+Lp^Qkq@_DjF*yn#KZAcLJY-Do&*kKeJFYISYr8f-Hbg= zW(iy*qw%!F*7nw8_YXSuy^s@D?^{{$7vq-86foQ& z8c(5#_3Q9x<6W&LOf${$2ctM?s&_cdN7vcUZ^=G{i0A?K5|&}sgy0+zC%73jIIJ!& zeu}#oL_!KOjOZSFjtQ+d%10x)qWT5r2iTPqGRKxl;#yi^Y=++V=5m8$+W;h0(LILC z8kYF!&9ME~xjRYtCN#kDV(D?wW{rQ`q($|#gvbYKuc=2wx{o+~&#{ba&B7b?CG|F( z#f_nJ=ie+TdvB{e`8@t#0(RVw25vBeeis1YCDa{P%?t&nmKrSPx*~H{obt|31_`LS z&IaG{(sA6xjv>{pIh+Q^NTDHgKT_IBT@CEwv6OTn?q)(*n$Ph;x+HT&zjXS8(=&-dPx(W9r!zsUCY$lk2-@kh3PqM5Ts0z8JE@bj4l{~;BI znSot|5wjWjFX}BAy~=&kD6Rhd8;1{NF2b4;Z+ZY1$HC;py)_oUQ*Ma@1J*$`ct#o6 z1-h);+W;J52TTP%-<}bfPweSibR$UcE1xf}pGOQJAv?unzi8v8hqR@Hkg$RUSrs1p zpjZ|l)nWu~8+h@tX7rks8O&&xQcC&q;fwaA?;^dOzIeUr<0X4}y?gOz{}Hkz&z!)4 z7`*{a)=3DpSiNicZ1h-w*#6%X46y{rwbcI_5?w1D$Hm`gRi2;aW`4PU=JHn|lhR!+ ze3*=L;>bjh-4DiTB5pCeQU&n_mA?iktcXOFp7?D?p1$Yuha8spo7|-5o>PBL$(693 zT2>#{{QH~oUc~E?mIy!xtYs$H%1KvB(zJ~$jp52oI3=57_7dneJo$awpYQO^%1WY} z+Gqwg)976il?gJPwbYGOYf5{FWPKHvsy(t0S!t@pXjC8rNIF<={=`97Y8h88q^fPi zHSAY2sE3xwdyUG$-wmL0267I~*~p;fdMxZA1dvgC4r%Sj+wnH<7EQf-KhcB?QQ&Jlw&60W4NbP`tR z5u_OjHbd!VRE5Kp;xY^GsvI*OEY4wH^a>bkl$cddF+6HIe>OwONWWRVwa)2qtQqw+ z<3dW2qQhN9^cH0RPGdPn#9fECha%^2I8cn+is9m0`4ZE*c|4-Pv`_|`w@YG>d(CuEuz=!e>Iz9y8NxdQ)k$Uec%x|Q5!Cb^$iPVDDCf2S@ z9Zs}h!F%$gwfxy0L@k zMG@Fnr<`a^)`M<4bbBHA`47B;!ph79YR246P=pa8_q0BG31v~87k!%3^+;M8fJq3A z(ct-QFUK%1vbL`9;IT&vQ8eKS-+6mR0mKq&>Sq?*&xFlRBcK}A8P`VG%^akZQ~j29$p`peOKjRNqQ!PpmA6?t$A zIQ;W5JWGI^zRwlv!D?M!1M7&#@t*P#GIGei)C08w#NZb+C?ym1k< z)hG_!!BVyDV@<$;t=j10Y;7CVTB^2urAw+TQ?HNpoC%$pdfAzgQMLO?$I#tY%PH5cPD#P7PiiVoeV;O7 zsA)gyzvEUg9JW1i9rX99BiBDzE6Mn%Vwq7WL^%R^%pc#dIkzT!UILR_3bxj7TvRG}pCjY!M_Um*ZyS!C{wswLV}wco8eQa^b$&?UWE!_ zbkt6yw>MhY>7|fHBT>;hhF_j6OeR~q@Z_n}){}|e3Eo_8#*$Uh;f2xCD51g&^19dy z!~3N|2vS_!s?-P%`H}LDrl+qxF*sP{yNo@QkfGjBTsZX7%u_42+p~5G zjg;lW3htGZo;LP(T16-`zq>So|FAy1wA}=@)-h}U2-$Wxl#x~Z^_eU$52N*P!nj(R z4y#Synzg*sBL^WYfMibMy5B0Qo+=yX-%GjLK5#!Pvn7wiLrx|~nl`F_V|cB&7Tc!^ zE75}4zcoB}*h_xoWGaHxUmSO$t&nWsfb;81&(BI4w_Y!dJf&;bA@NT+kDq-*E&39^ zJ}^;1W;bL#e@fg@!!%MD8MBFut0J;*tiT?Y9WgXrTsB+qOa8&D$eEo(=X*p=S9V?B zYd|NXRNKIeVEoa;Y>3=Jg6WaD(>|7@RWEFKf_mgtxpLS;RyCPJ(~4Ep2(5D~+MN=A zRmgL*kT=3l9f{l)?fwypdueFA&-9nc_D)ZZ!ApHN^cI~LW;qKu%M$buRRkcqd%gj` z>YuR2k~A$Y$Tc#>Ht@$RVW~uk-6N~L2<4w%b2wnjEZ#vn@4s&CiN1b?&{f7V&;5|k zoD;XyaS^icOH84*C=pqnphJt|F0H?cm^P_b(8Q&E2ap8{`-&~cEI^8{?aF&bi33eW zvWUpEQ{7zvVGpi3K;|yrk@_{sJ6BB-yX9hPxP@*RshuG`ChL`ly($mxnLTKC^GC6x z2vtEQ@*IOJ zIr+<|dv*>MyR{Xu{8_udbu3>hpK<_!l zR-*D65ZyjFW)!QotR7-N)3whJpKvqwlaKD* zTPJ(DLUc0hgQ1j>{6A;d>b`#L?&*w>d0GK``{ErMW|CHKqbdiS4>(%~>`DBTm$zEI zQmI4&BROb{0+Sm!Be#_y791w~zpP8Yd(CR+@1Fc$W++8~ho&e;7p-)!!ktYJ*;SOp z5C!R4AgW>SFf&}gHXh0dd~_ebKmTzGNjf0_>-qZ@cjc`rcW4->VPO=M%u(B(8eZ@| z|6%%xcZyS4>`@!b>w_>H6v#ehU%9CazYe~Ae>3X)?8UcmAJ(T$lqoIL{+sGYXTUed zg$zf155R14-h;oH_RB97TIiAoYpfJN*$vI4p+$-rPjUWC%iTBK=LAf{wVCnMMAjw* zQWlzIfiiliq6FrA)YN!tmCYj`%wrcig9ACXz%s&i;qLQ_JQ>a;HN(=vAc{w`-9PsB z(Z9GFzM`DXy6N~L-ct+*1>vNd7%6mdaYduZUOTz=%bBwYm~S4dH_LIKcTJRKO28P$ z;Ks=(KE5$q*v-HcI8LpmmLs#2da{24F&&y55gdHb_xR0V!`r-W=DATssnt?p!sZ{Z zLN-roW)0(QnN=&d@HSmWlK!wU%5;z)(=vsG6RHbW^!^uq{dEWK86L7H(1uwFUs!EgIa z2-Op&;Lo4|4jNiqj~v#H3#yz(VS*Zzb5ydoub5lN{UORpJVq^|%onIxrE-*6gt|;(C|n6{_1Frdp8E+OG4Wmkznv981v2OplK)z~uSWK}htxoehBcu^cE3ll`3(z{ zd*^}V>y;riv+d9mJ5@NYW9ZxM7W6})C+`hg}=61Tid;t4nW zd=|8JAS~Q1PWzkrbWXDpq&)O*FuE1%+g5%Dz8Mu7-F{HD(D-?U5aKr zSVA5Din#*xFQAthV$#nRiDesE`Lemb;~4UDcM;3qr54)s6tAjiQmpNE5bqYN3=2Xp z-oY#9j8)FXainq-2=})6Y|q@!%4~-=cvPa|J7YT|_?l5adTUvknKauGPnCw}Z@>cr zVP`obfe!DDdHk%>Wv`4@^#0RdxMHwt&jQQ31D2f8K{G3tJDDJlYcQ4dHps%Ol$k`*z{mvrQebP@klmZ*6z?HYof<{=8cRQK!dXPz= zLJFnjcIEa^+Dt>^nRPRIj7VQVR^&g^;Rqo|f|)q_K7oQ+ihorh`@9TEjw$GRqAaGB zoZ`$YQOVpDK4WuvrMDVC@s5Jpo4Cnv(>I3#{CI+5dcaQd}miu9)M+TuoCD$yf3F40^OEVd$! zd!(fpY9OFMk)QR|>JUEsqOSg=B&#I{jmkpl^QvJ2T4#xO--Tw%nFaV}9S*LqAO%>- zm}^O}1)V7^w5;J0qaE`tjbS;>iFij;Jo)u-M~4LL4FYu>(jFIXUx`qys8|Fubx4Gx zbHqDMB1%17tGW0fWThOh8QAiK2;4*Ms!N6klTIZK+Th&_F%%N?rwF2{+~>6fQ_ilX?edB9lqQVB_hNG z;1b|_bJQ|Ix{T1bxCgTX(AX;>byhSj#gy$#f z*9%-df@|c&Ya28V0lT=3eY^IjyIpCv=IlOl!Dmo`52co9D(OWEIDRj3WO3Z?mIF|t z98a{71sziejRT01{tT_acE;IyxArv^xs(QsDb~UMI$43s zl=7zMulwdlM*`g}P|NV>r1>)o+v9+|5ns0C-41)aN+^$5M$k%1|e*-E+3kPpQ5&E72 zE9pmCSP21%b;uW5biS>p?tEiZJZrTMi3Y|b487s*$*_VmM>fzL7TEux@7t{XuLFWz z#O|@XwT=~qVilREV%A&e%h9Am?-p%+>tY<-%(mP@z9G_qo}uWfgo2YF%>_W$+#<+unu_ u9)#oWkmOOtyFfjds0$x)pjDMd5adhV$K`oL6iA-Y#m}7G zE!BVhY&6~a_yfR<--~gWE;Hs@ZF-i%fw*a%K`PbvQ@s^i0`XC zn?cXO;bQ++%;c>OB&v(BxhyEdd2wQxUA8L3T@@0VMCY3fYESu7L3 z>34nnzWJ{&@_soadU{^knaosGH{={0s4zV38lBlFJ29#xtlp+L9BE%1;wH(IMI-R5 zz5~%7c9us4zcoh*`6-Kr-Im)m4ENB;xQ&M+aFz#M6}2btG;SU{vLhhl#_Xk{vyx>I z*^NJbw!ZA-jhx2M6FQ!L+T0zu!#S>eFi;?|%zEwET&hm={PV&AVWG~|2KRrJ(dQ-P z9oo;fpR>g6?(WZm-h3JMs0QV_P~87U!N2+ayMIjp!J_b2sWs}IJJ~C(WfYi8Arc)O zi(4EkWigb*7%RpW2E!^wCXs=Xrny8elrG~=s3kdVz_Vcct>I)C&6y% zMML&wGrk(N3f-)!u_Bz)ew9uKocUdfMpfp5_u4qH4g@77-f`zEu?;Stg1o)uxJ+%E z|Gp>0tx^o5fXdVCdC#BY)r^=$CR6@+s47o}4%xAdE}f`s-e1Ok>V_%rONM*Zs=QD@ zukg(^tcR|j{@X)!Xprk#bv(qv;n!wjgQ}yJzRT@_2ufVeEiU2bdN%6N5Z>D94j5CT zdk%Z(u&qj;Az9MU5}zVP3q+ZFzYOZ`OK+>*UErQLAhFl1Ip!rAH#2^6>c$gudE7oU z;UpRUMNT!XN{(S4)>6%TUS!*e&%pO_Po!eRec>yZVog@>9g62Wjmss2#Ul{!1oSoaLglVI*tIRM>O-84t zp={JvV&AP?^qT zIw52R=8%~Zy^`)s%K#ujs7I{sy?ZuXQcWCrtoT~lwVfiiN=QqlOcGn&V7?T?3v=}l zen&~5rsuN*N)yRxyqM%_9TN&U-#a@w*u}lr&tdEcS*$zrS`2|R>tlY!DEki%43hLS zto)v3XHxSI5fW2a_Kv5aWPYn z;4sXR%v&Q0{t53F#w1Ju2Q@`z-3K9JWqbW9+dwUOMugoY#FCXJ`^f4p6KNf4NcMt> zukaA>NmWhne*$WScCH-1@4<-sdvQH1R*o`CUfB*W4VHdiMPJt|y-9Fm)*E9gyv##) zHhjBc*~IpT17D}5E^)5C_3cLJP5Tc!cw#U5iLT+tPMV(y6kWu7mi_*qlPOo!1ydeQ z-hJ*r?Me;${dIw=%%2Ygf6`lzmAn&-jyD&_3{#N=CH$a`aN?VXL#5vF9M?}ah7ERl zwcQ62{y8HtR^$E<&j9Mx{X9kG->UR$Lnu!5N;k}E1BFtQTp>Z-_|YI( zT4j4*fOqOQ*(>np?f&@6Lavx=Vu0su)RM%yYVldlmQY1Nunm$$gy|LMuG^p{@+zju zD@cAKe%rzT8Q5LI3>zUkn~3q(1mJ)IV%7X~yz~-1ojUE|U6*Nf zdv;qGrQ=q-L4ji}D(J5_^&v7gbig^vwieR{G2Ou>mXYy;v2UQGpj|!*LLWy3bhyM; zXg>_OtdLf-nF6aF^B67H5brnf|MX)~4h*(>V}En)(tk#O>GP=y!FH#f=Cs|4a=i8< z`I#NTBAa!g8kGRB>9?j#ZgW`GIP;?2NfAhjeqK8_^>{7N2~j&n#Dh(xb$rxFrJ4=a z!Ddu99}W7XS{mQWg_N2QjW^sKn3m{wwu6gCOvB-y=N9jpaz^jfwP)NW!8{{Nx?h<& zKV*{`jfER&t%oNRL<-dNOBxI>7mz^lTJrV?*j{v~Fk=|ni>ToZco@a_qe|{FoHkd=P!~XW_87J4mb8!g|)}H(PG;m#m5~}Q1;Ur zXxV$NvS!&g?0Etx5``RZDg7k+0tT@z;&bi#RU{g)UqRE5Q8ut|RT8)Gw4wJ+HUSca z%_I+4M|2&G!_ho`n^z%Q6i`4<6e`vsPgL%>Zua1&ZmGoRqJUp59dy1wrV5|iPo;vJ z^h}WCsA-4R^kC@Q*)_13t0POlKJlmk@+B&4oCejZ$FChO#^r;#zH*Mvr7^=~rX zq~B)(Cvz(?;;X)+o<@aZ#IzMBchKpzWgH*a{@>?{y2%D~`f6eF11*JcAm9A_(=jFS z!)n;ytLxUP&dH8n_jFp50r24;MiB8>-_$XG0i0kouGLDks+#S?2IiOYQOa9{ia;`b4@?wfv2 zT|{hR=0(@rLajVg-JHI8PV8Ks6?)w~Y$KNZ0Z%-9-*Lr+`lVNYQ}l5GyDGCw&=r01 z9|4-hgy_0)b@=^hL?jwS|5>d?{UWbh5!cTp=@9$HhmVgtenT0ts=ECJhC2}-KK@Ig zvMG8sD1SC+pL+4b6`Z-tlNUu29?4v@xP~-4jO?A?FKEjdA0d^}N@lt%vFhRt-9p5-AI+tASWLcd8UClI53FA1I&9Zq6w>=pesxPgA@FiUPIvF|`CKx(th5 zVWWL8~QXe_jU+b43a8H1k z-Eh7hZ}KVI*IFNzfN^W`-)*VdBr8AXeZ*G+aoFhaSUy3A?!HpDx37pguljrP@H%1x zx2MqLSaCeJ{zdGOw>9u`3G9#ng&GCDBgjHoRvC}LYC>qV>hbrQ8{Kk;6tGfqXrcXR zURmRUs4-t!xjYxPku_Wls_1E$;UYbyOd@Cc}J~4G)t9vof%ac5q`{{=QMU zSX96`)YvxC_)jk4+oOt$?MU3(-e0DQ-vZXkWBjCLn*lV0udty(zBPwu7XT{{Nz&IZ t*^2die(coq^1Xcdm-75`+T)vP2OTuHk3I785sjC;^2PhcK^75&{|{u;se1qb literal 0 HcmV?d00001 diff --git a/web-next/public/forum/avatars/class-3.gif b/web-next/public/forum/avatars/class-3.gif new file mode 100644 index 0000000000000000000000000000000000000000..ed74527afddf905332297f033dbb621a42cb1f16 GIT binary patch literal 3647 zcmWla`Cn3byzEj4ZqmOh19J}`@R-zSh2KI9T4 z>vxE}JZ7SgVBHvcV#`MBnN9D8?snz`-(1Md+?izkntFW(sXLMVY#Haf1}b5Zjyb{B zw!-n-X~9IOs#s(FE!f()XwL!BYX zuG^&+{mb+vU-G1*xgqlf9^8mDXtIBzF!HyWRn2ppht8$^eo1!n|NQ^1PCh(QadjYS zLny%W3G>j>lbF+~?=mIeELp*B#I@c;0+>rYmpWv?Tp%2f51`7XnWQ!6AYn}YpYTDZ6i9YsD!DUd%=-~c% z*uQb#*Ei^%us~fV4yPNS1b#xtxfzpT_y|i>7n{=iNX>E%*$+Oj9jhC>;gntej_Hep zTwRwkIJ{p~Cg2@oa7S*d>b$MOsJ37;QWjFL*U@)P6Y1pfmc#RD~UwY@WyC@Dvne(C*s! zQ!R}uT&$_uv!(B%dC>0Ck-}#})MbW~G9KlI?z%(xG4a72hD53rkj;l03@RInMVOYL zetyTcf4G=c&>9~#KyK1=VJE*l(7Tm4T!=9|rj=AN9Z&Ir+JPf(NMtg_wzktRm`19< zGDHK^*pduytF8ATh(U{F3L@@gxlL`1RidI z%=Z!G`E1fNh5$eU*0gK^L~$6F_Clx`iX>toGT_=hkG$$sYJ33f5-y?l5+iTPdN_SP zyDt-REN6-IH6|H~R=<>15`05s7(J=rTh5s$hebV2_3syEiwWUhL85b+rP8|Qhge-k zXGt{O&~HOfWWv6QvIzUf8=%}Xk*Bh5@3;^gFWMEi85<%vGf#L%SE2tbhgF`s;IxNX z97*}}mzx`!gBOuINf$eGTZmKT+;E~~z0sqTkADAfC(Z6>{KNt`HhyEFZy9uo{I<0B zY&gC{IL~ZquB5Td`kt#R%Ex~g-fSnGc39Y0Tl9#1sy6QTxFhFb7iMfnMS1DdoQHO! z>T$j?ZMFES-7L4VPa~$s{WE2`y%#Ik`Np$9qtsDFG|^$~)<(4uQ+!7KJQkljqjjhn zJEfT2JGQkkadX>M^VdlQrDs`+3Nu_&_vvI0zt--kiFEz*lux`E`!_%ceRIy=$w}}Qh@3z$*TY1oLJqBSbp=S0<}v( zq)qb7Lszi>vPtgv3TxeNhJQsi5PtEZ-}Si?RNAfysNXW1aEKHwX3z6A{CIn_#h#-0 zYZ}RvOnk)d4?ERXryV=I=$vl_hXYN?Pl*p}q8~i`_peqyixlB*uT%P%)jK3NpP27I zSaARKi&XFE1|lcaCQe$h%e}?>aiGi2BaymH54yqmVmjz-O-OaJ(0xK=wZ)lRlDD1t zlhbHw5?z&+6`vSZlh1m3B!WqpV40(4+06|uylAE(0gatubFa&LvNSN_+!_U9l>@TK zO-K^uw+U5cxZYS&TxcnT(nAh;N$##x$ehuIC&?7w*H06}@gQCIV>>Wc#kn5v#HEJML#k z2sKK3ZPfsEysye5^KyK;1rBA)C=%`l-MKMS&j4kK&~q#SkG#-y`ig4)C2&yiyg3 zpXuLSiyo_gILC|Mb8W?CRg|85 z6e|^SI@T?XmJ*SV~c@+HjfagW})Uy zYQ>!Mrs27QaKxx()X3U`0srIjrEk=g#o7l40#XP@L6+w~{}!x+F(!^M+5&FaE9s`X9lh-j$5BT(ji$maF1pKA1B@GPzCN5 z&8{5n5L{_oiBsm$l$B`K&FbGoFPI|GVWEHave@*B;Ce4=DruI@0kN{KK(R1)lmw?0R6kuyfjA`s zyA+d>Ml!snU4xNkBSd3DaN+YWaH&B>Gq7&g+d&WsC?_IJP%0Zt;{Ft5U~C-xN%YR8 z^a+yNjs~%bc>tOQiUM(jg2SOY%*O)1JzmgPmHmNF4Ay4}e4!xjPs^p)asx8KCoOdXX8FT~UDTQG@?9u{nh^{Vb zRF#wvyrkJwEjl+t`A=&z?x`D}L!Np#s=I7G9g7u|>ZARNxo`v80TS>3bmO9LrmK92>1h)IqMHU@Q(Uw? z88igX3a00oAHdT9tb2$=8IT|xP32;1O(47#a17hCXEtz*kcG4}`81fqCBCW3$l_`W zaAd6xka0LSrih3mQ>C%+mi_3AQFx#aS#H`E!fy1!VW2~OjQRC1z)Hrh8RAXsv!LSd z`e;e9LW@qq(Yq}$;MTic&);4RXE@-mJ`uE|5UfSl>QFBox|czW!;!-4Sd<>4n&2=2 zv0!FXa$&aRg>uQLdNgCludS%rcVA~#UI?8-H9*UBupb>G1CZB(9?O7}>DcS9u#cFS N2+B(~CMf}!{r`ZPrP}}i literal 0 HcmV?d00001 diff --git a/web-next/public/forum/avatars/class-4.gif b/web-next/public/forum/avatars/class-4.gif new file mode 100644 index 0000000000000000000000000000000000000000..96aee8038b24dc4490d55fc1b683552ce5f81f24 GIT binary patch literal 3901 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%0DX{!kYvgnzY{)L!<>+qh+O|`rraU&DpEr?bW)l~ z-3*X)kVv>p=^$XbSWR(FCZnzbsj&_q=ke4OXZ>r@fpRQ`cxSU9k=ZPOCMC--^ij1j z(fT3aH~kJuQP)KdMIf<9|CoMEm)9Maz+C;fQPl5p;~~CD7JWoLfa`OU)1b7a0_s1b zL?&!q+Z3k{w8(@kI1<=ad^DlZqR?oRz+&kzg{L4HXvcbup!xEfXSB8IxsTx8>wd#K z0Xc196I{t2(th~}?p-}c&EsxlY*Apep{O;sDMLRU)d8eXsY;$PMi%7_w&zL6UR7#% z`bk|ZYZM3-p0#}q0JkZB-RntoAr-ur9qwfR*Rj6aTF;hZ0u5MIid#l0YR~@!fJ3Vv z8if;}N5K}O>uXl#DU!Oi7w(vPFvsXwsxm-)-DtOH&TO<$65ze{XAvDqA&_-C;0pz^ zNsQX4kmUPFF}^u`A5>0&TiGOU4Dz{>+m!^Y6QGsaR7(^fOMw3@r-mfw`w^DDe6vmg zI_D!Koy{}D~OH4fR>BlEiQ1T4zQ-9UUikDS90$r0apQMPx0(0|uTEn86u`tG{d zhm|cQKh3UsD+8){RWqURR)Ulx+!duOh+>mGT~QMp&BjYj1hrfOjC6t%aB!`@#t8?! zFenNy221Ku2`ZYFh0wW?>}n?w?883d;R27>iA}ZG(rPr8z@oMFiDCnks|705V3-zZ zY5|<}fTa)|n+F+6gpKc->1#-l05SClG+yV#E4nv-lp(=7UBM|PN)wW{YwMYK)K_9oer&)7(G=fL(NL)JRgK4!SxG#!myeWe`ONm2)8n zI=Y^yFJg+{^WfukCqlT@6>f1eN~roKkbt9Xyfa?hdG%^%gt2umW9eid;Q#A^81euB literal 0 HcmV?d00001 diff --git a/web-next/public/forum/avatars/class-6.gif b/web-next/public/forum/avatars/class-6.gif new file mode 100644 index 0000000000000000000000000000000000000000..8e937ffb8160d4ad8782bbb9d69598534218e767 GIT binary patch literal 5012 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 F{D1Kg$YuZl literal 0 HcmV?d00001 diff --git a/web-next/public/forum/avatars/class-8.gif b/web-next/public/forum/avatars/class-8.gif new file mode 100644 index 0000000000000000000000000000000000000000..51fd411b23c51d3d3b05ac9e3c1363979833f801 GIT binary patch literal 3666 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 I@IcW20Tf=*w*UYD literal 0 HcmV?d00001 diff --git a/web-next/public/forum/avatars/class-9.gif b/web-next/public/forum/avatars/class-9.gif new file mode 100644 index 0000000000000000000000000000000000000000..e67c9533306198e5dedf3e05a6af39d992cf0f2f GIT binary patch literal 3539 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 literal 0 HcmV?d00001