From 5c13a92977939df1a54699c98a83acbb91cada2b Mon Sep 17 00:00:00 2001 From: rodrox11 Date: Mon, 12 Feb 2024 20:59:57 +0100 Subject: [PATCH 01/22] Modificacion doc5 --- docs/images/Level2.png | Bin 0 -> 17215 bytes docs/images/whiteBox5.1.png | Bin 0 -> 63972 bytes docs/src/04_solution_strategy.adoc | 35 ++--- docs/src/05_building_block_view.adoc | 212 +++------------------------ 4 files changed, 39 insertions(+), 208 deletions(-) create mode 100644 docs/images/Level2.png create mode 100644 docs/images/whiteBox5.1.png diff --git a/docs/images/Level2.png b/docs/images/Level2.png new file mode 100644 index 0000000000000000000000000000000000000000..7360072d63062fec1046f39c76a222a1ded8e58f GIT binary patch literal 17215 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 V`EZTEEqPYrVdPXgy$NJj+Ny zLBXv4@SZLO1uZoN1(g;(E$}z~ye{V{C_*XJ@2Tkdn{P}pd@_BOf+v>dDJV$aYMNhJ z+56QLr<(9~JLJ2oskFkS)iqkmE;jbyDIMj?y$otLwsSPpr%%muhl4EX)#=!5c_C-m zAnFZ`@+)FWx#9BRKQl@TN#JF9{isiq`sv<=hByNxcG)YWurcY0iRkj=sL$qlX(1JG zlmGwc{~Zm4&Ng<&Xl{P^^E69q9mzl6Td41={P`ZrsQmxU?|I(udE^2sx)7BA5=FW} zjQ(_{a0^D}&M+dIYS>^~j)uYmhsVc!tlQq{mKtrCzJ2mfEguU7C$mF}Y^|+nX#RQxuiQg4i$w(u4JMj@qGaf1GJy&3pa^~4q6y;Q5Er9Axm!!!^YR4=+We2Aul|z&PbCp7Y-DE)neS_=z}zY zvw!{9**anYG1+`hDlMBl!JEEcf?XxUF-BwK#P5<3>y!7I85n761#IvP>^NV?IN+Yr zVOWuw2n-6t?Q0=^gBsGcH2Le$U^b4V3PX!wTkfY z6DcTS`6CnHys6pT)Zv%>-+g1PTA%zJ;!%rC4-vFeKbj#_$!ux9D~2!AmomNR9bkp? zFqT#=G@E$SyD{||)0@W;j@mn3Z2@W;CUw?H#E0Y8-Iyq(LT86!h)C6r^(9_u!>28@=c;=6R%0ouU};i^Q#2p}TzpqIbMNw>YLHr!dCU_FFtx z=!agGGEtXxN@}`p`Z4*@hBLr9JfBjwyRjlOvXpgJNWj@`|I^vwpARh=sb*gsX6MKf z*etfrwLU$b^;Mab1#imIMsEpqL}p0MG{Yw*vD}fISLnyqnRw*G%dIH@02WZYQ3bd> zm_YtI0NZ;aO~!h;iI40D&=~Gkq9@qC3DrcfZTeyU1<^fJgvaz6*;d8}x$JMxE~CkJ z=7s;D>qNlG&xfrq?CGgv)>$}b?;%m=#T;tp_tC6n+K`}k^qEtFP3IfYi~qWX@%g8% zZNxN23!Yy$=sB-|C@4hE%7xvjz4-8leGH|_09pvsA-)<5#r?|k?zKTocrLSgZ;vSW z^eml+(v;{ zBE5g2%ro)lxD77d+6rK~${CBv0v-tb%+q#_&3Yv+(LFJ#A&L}J47Qh zyrb8Wx-5UB9$kl(Xp(;Jy4g^^^*9s&K*`5hNn_K$Oz~Y46i56a_Cb9;&)e8cn`CU# zObjVO9*Iae*WYzFdS2?3R5H5oU8IBGgwxe!H^(ggrHfuUWJs*x1p2@AQ^$>8D*j`+I^ZNllakkHlOe<7jjnQgd)b1?%Q1cPqYA#&7Rn!RzL6V_ufd^?GR;|p9N=?wv=N1-5+2NrGl7|rZTAj=JTWF{B^$1LqMUclntQ;ZTh;$V{HV%KvINLdf17gYv zkhMM&I|4C}3Em>P4@m2B@|a23=xq1s@&qwhnY z&bMzo3n=2w^!mCPT>T)V9`7~d64o!y`A3Bj;VlPe-01GjouiP30#J*O)hlIthv}To zM`$bN4oaeP+S#2ss}{&Af#kRkKYH{W3@3vSgX^P?>bqQlphKoSnemP&4B}agKrY80 z_-BD2=io$Uoe2tx$CrTU_4#7r<{;L>U&qw~l|6bxR@{zZ-w?GEd*3-rs7=arEbq6q z!)Wyp?r3EhzP5~n8C=E^am&%Ca?kuZ5kzTnPA*LIy(|R<$Llm@NthAgQ|xu~y=Max zhcoAi^FK8UwQM=o&zOj}Xjh|tg-(VyyHPt~p-p|20OW~oK@!mYjXEiozXcRe5vb|;TMM{O*VS{H#L6dKz-&6J#fG89LJkoFP z>D@b3+PzBT9Hr;0I8s{^$-4DovxstiJGTnDpbNMD!J*+U8MlWe);^>wm4J}MR8?96 zFHW?n`%-W!*;tmxNWS?zafPMe(U_?D;_Q8U;oc9gQhvJ8` z=Wn4-znm~V@r)Lu2PbHJpA1~ver$Z(@6JH(XoiC`P4xo%vOx5upSKl2{ux;%+H50h zojr3>gI)wRmLPZjXTA2WFTRM5tf!{q<5q;)g|E`Th@q6_Xi30?fws>}vW#IbcG-z} z%$x>Jx4e@J0zQ6rYl4z5UMD){4LG_IHf;ibGpuvr61Qm*R)kqiB3dTSxc(^7WQ(3p zLu_q&1((x?62^2N#NeAvZb;IClN%KN@rjS+H6TBm7MGVVSI|SHzSTa1Kdoq&bhT6UM}=+4Vtj)> zA@*k)!l)w?W^PZ8vH(}4usVU!-@5+h6+-YP`J|_sPrr9%9U9AiXx`T3eMYnT@|@Zb z)XhQXYJW~D5GS>6I49uG9&1R=C4I*CE(pF3S2pn-QMPGxY8oxyNhmpL_v$U0j5(cL z0Al+T;;xQSt$2Y~R>z(M9XUsL6nzF9GPJbGBS~8aH=#yGJ*CWn6kTL;j?g2lDOQD} ziY>RiSMZ?HG1#c#c*qoi#;W75+~GlE1GH_SJ02WA^4`RnKgz3FYjf6fWeC(5k~6j- zWg5lGx#_a12IU9%`_xUb;etc9O?9&!GlN8)G`j{Itd zs$JP}CY$BMVdgNHXUrEV3oJqsbzj3FejYTr%YSDh_xB%jQoB`)U zo`a1?9Ku)Vsp;}+dT^>|wBDIeA!K>>y*xtvF<~>Lq)>RK#A^#6E0cf_m!l#*4>~?8 z5ni>+BmhC#M68$m&`E1NU0St#n&)QQs0p(m1XiVqh|;xDjGBKz#wfXXNn=iU*XbF&`W-Y8m3MFkYRA95k-UYP(W+_uh)7FE7(Hk+gRZh;j}RY^@~9Wvm8 zzKJY_e?t(@ODesfVIXXsrEisGP4(*K$(Vu^;;m`IWc5XjeOi;W@|c2?+TXBq zQeWkRl}8MO1s<3HUSyNp>XSq-#kpzI=IR&TIqt<}99mafxaEA+J7mi=GJ)^~(xxr;5>5e}+l|Mer;JaHpQgyyhtz>)(4+N}yDh!~Uf%->wTcaE zL6+-+W4p=axcJ|nwv_VKaU~5KCU~**t^=A6$Gz}6zzQvP6oBhQCTx#{cWQ3Zy*{3p z4B5Co_C338lfOK(-T5@Nm1|&I6|IvhJd&$H320!4Dn%b|p@Qf+16{-J(ohmUwXJhf z|6NtIwEo)?9rwQn&e-p-R%DWmVIkIDvd__V7m}5wLdJZ_t9vYphg$-V4kf}|WLvbz z*QE|EY>iOa_6^7qj^2ic72jFZ&Xy2$QlihHee;D=_e!wDy3gwj@3TOb;SmFO?SJsF zUz&3ELZY7e^Y0UsXZI)NeABtk7b|K*THkd?%=`f9%U>=45dO z9o!yu3h)XE>Vpmn`;t(rdm{By7Vi%Hf|^Uy)MT(WRsXS*cok6Po(2WA+C>gWlFS zr|Kj2uBx%~|Ll|hQEM;5ma3oVFdAv%7m&HWWpa{;Q@P$Cv%>gJY{qe4nm_%GbGXDQz_S z@^PM;Okr!4Jps#Pcqjv$hSB_ibhnUy8F%D}?TILmdd4?EAw==0Qxn9)fee~`hH%Wo zjZUw?8LptL+uoGO2Or)(BKZ|dysM#O9AWa{;gAe5a?Y7nYEXsk_5^k$m*VWN=sgW< z3wfg!6=H{h_Fo+6%WjXeD9a%40x?l>NX$y51&Dg)SLMznJr*pGfb^B-L+b2*MfHvV zAtk3}HeA&s$aMuTt?`Yu+O-j_SOu;t0lG?{4}XC=8`+M|MU-WYS80|#Jk$JnRudlpseg$ zZv5vB0nVs-|5nV*^T@Gr+`g&7L;6kkj+bFQ#c-5MP^)Z&44LVqk$5>BVK#w{1cKii z4}~0M;J0eCrgU01oy$6FUCXAUsatC?xG0O0+f(qK_-j_vB=t^Tj<)t4VyyY#*hVHI zGjm2#-)IhD_GEo@EuK(YgbYf%PLr^|c-q9W4r!l8Dkr!Re@_NP|9YC!#nk&lGSzfv zU&S?Aw%S2Aq{AF94I?#gyn~}OR~rW zSCRXm3Ajm}5QzPiQDOmdv>4gq;YDXRFKC4v&u8jZyJh55C5hKAY+SEq-O1^fMB!@V z%s(gVt~T{T%m3-P{*lE}$mrogMJDlnl<-JFp;ayq|4!nBFuik^O$aU*C*VYGTU^uF zguw7(oYco-vplqJ4f|fHdT>bmxQ5lJL$Pn_O!Q?rvY(4V4GTaqobTRp2UkV!cGXz1<_yYt`JF{xfhG=X2; zGs*SKFhM%jKLq7Jx}@XbQzUigdynnlpw4LyIW@t~^au86Imfk1+}a^Y3+Lx8p8)spy55^YDENusNu-kjP8=QWgfJM2y|Nr;>G z3+MzL0PS*OK!~{;)#1DNRYUp20XlG_{xuCFIXl$R`?cbOV+X^}75an8rTtZAe$Ntj zy3zyGkK$v!v68>d`U-v&cNC@~`lJ~3e(y+5o0c6UXm^b~c_s1)A8?PoB#_W4b=66N z@{e5at3fkwSzo{Aip5h>s6F=+i;8`03=Ua?d4JmxQTy5O&O=s+c_bP6v`oFYKL+8q zEWG^S;s7E&uy^b=l^ zllqkk-Fygzvd*Ny&upQo%z;CbO~{b8-m++!hQJwZ>qNQ$Ed1E4)@PdwG1st;Gxq5aE>+~L>C#V0VFYCTme?bZer(cxr ztzvym*)v2>k=zE>jIzS-Z!YSx{m5{f&T-TjUGobn29-}SIrG^j|79ILtmH64Dqfs^ zVS?r`-t0-1(|#~A1cDpzY8q|6(D*%^(EO5fJcajxq(!a;Y4&y=5o_xaNy+jT2Vyyy z1yVjO&x<`p5k0pFVO0B$tfuz94_+aqe37t7)EHuw>sNeLt`^Ckdh=O871TRZ;!<$Y z^)9o&%$1xlJ)+}-m4L9(_i`J3{$Wxq=244Rl3hfWT~PB)YW;jKO?G-elXRBlUwwF6 z_J2PO!uIglfYTA&HCj~Ov+C5NK9*%RD_6f_SBR!+R4H>rJdF@7nK_BImTJ+~dF;eLGCP{9!{cP|uh) zpf_dmYb<{EX0rL`uBv76IXL}Uppb*J?Fe1>`-=P$8e-mm?@VS2Sfh>G&~0!J;2wTg z^o+VFPw?Wk$l~#U7FAsN&MuRoYph;`uTX`d?mh{_-Wg1cQbL@i^n%*U()s0Cxv)P zoA|E#n-z3#^I3y4w%Pxf;FQ`=REnf?!+^GJqx#yJnC}LfB^J3T-^l{fLdhDoOG4Vk z9?SD^F8R7HdY8BtX5zi@318r}KS!lbR{6dWNxIuUtTB2;cj)YCOrc_pDq$nkj*U+I zkN$O9X~IAkG9_rK)q`THdCES^91Y9B1{C9PPTlF?z77-Y(Csw$kyRe3ny8P<$UyCH zx6Z@_t+6e4IU1ES`bO?m;1FFC(M)nU-a~ zU$6aag#Yo_Nd0k(9^1X|T>PAT9eh;%FC>bCN|!!O6z9WsT=R(GEiBIxYJYe@*^%$J zJ@FX%&2RdJ8Bal7;P)S0Wtf^iCPI$Ks+xKS(I`mtRZMDSFamnm2#yXvK@`PfF)mZK z@_*6a6Bg|r-Ed?X&T#tkGYP{LX7L{V-<7!3$+6G=HZeJGT+OS4Y}Q`oxP2TC|e%6gknO=EH0ppqt4ZBdqF@hKIt5lx%cSh>3RAr7EwEv2( zkFv|Z`XZ0oGjBSM8>_MB8nP8QZEV>yjP)FIWFCf_tE01HEjY)%Y`BC82%EXwO5E6! z8th7MI8NBrQ*;g!g05#$y(Xzd)$mq!yh6AROBe=kr_@Jq5=`j~c|Q)71H|>QQS1Ak z5j20?R8LO@gxc)v8Pg_+ULa)=?46pI3(B7!;Sfk+-cB@m!di zvn*q5`b7pNetXp4#AvTA~RPNUF=i#UGVg^>|y@J}9$DVBz!^P+yKwNTX!qqQcosMU3#=XQyC47Z(ERYKQ z%vMX)H`|Kr5*Z=5XWRS2VR)jbS=a>BMJ%2C6Rh97wqX0Q@x($tw=*;NkzkX5%-aHs zvX6^=XG`e&W-|{nT}u=atT3-pp7Yx*YKZ4>E;@GCG@t2B(Y;6Vi@m%a)7=h#(lh`h zfoU}pEaV&eHnavk74Y`H3#2LgX_RoP_o2SUKsN#}*4X0lu8)=c$ywA}xeZ(==^ZjK zLH&%0Y1KAg-o5ToS!Sd1b0n5*4GzHaP`|7yDCe)|ql>R+=twH*76?6k%txR}`OckQ zxhf9L{{EkGFc`5tB*fq*QubFL-;X;Ub@!gACzrM-mpvKM{zfMe+U5$QJ%r?81?>CLe`v1t!&bd>8;oEQ<}(ao+RA%sBOvaTwG-Q4h(#A>J;AJwX)C2L>w+v zTvKRaNYlFI6Od>ST&a#ES><2vGV!XS_PsL2e~BQ`m1)L0GrWRMVaC?RPA!p}R2{Lk zU~IkWZ%yZ$HcO3MID4A+Bn z-&L*^gk|n4;bOHK{bN`(igkV^km**5U;`nAC)rcjBxwXRJ?Vx;HeCV|BA;j$Jcc%@ z9lIv~PdOvzBI*Z>^aK)V!d$!^baT{U@B?o%-`V=3-xt##2`doq!6rs{wnlk9?C4)G zQFXbJh~&DU3msi3wD)8~9Pjcd2FTE!%z-+@{0-a#Z&WA)S1m{bF# zxghb_fOw4Wy|Rcvl1!gl-U$CwD4aOyXJ*5=lJHQ>I}2j{ltQ_K&K-c=^$S*h@GGP2 zLlHQ~-JAgMofVihR8XU?dfGKh*B8D=>&zP(o4OV|T8iXEt*PxdzvXwI*ss@k@f6za z3w78V2W6d9xA)?+#2^D5FPI`-$wt_KrOVfsZ*}mbf54=#z#SO5Xph5{8%d*=`9ECQ zGOPbbviT;ECC2MIGziuF*jPbuG8blAuRi>G!^jt=bwQz2ap-Jdt{}mLfo6WEU=i>h z3?a>Du{H?j`4jDaKy1uZKm50Rp9zD;6U~Ri0y9SR8c76u&VzWfP_corFa9~|{eGE+ zjxpMU@q%u{I+{Ey2sxMjRdAqk=0*TSv+Kd$>SoklcIKTdVN`S8sC(VR2cP;29hn7n zk0rXfGHY(3M8piK%fpqu4P6X5+Mjz)mw8qaEie-Ft5dL@qXBgYdRMyoQ4a7 z#7=gsDCU0xa($K|?2So5OW@GGs%TM{ja0?wQto%alx^ICwXZ~E*W3-Ookv+4j{*8B z<-N>F&-izJ-T=;>H|{i0X_2D3;p_18NXqd@!q55pyjk@Ap4dpD-qn;n4r07*a$y3Z zaBX~jYNV(DppTje&&sek=)RC+{2mm4ei~u;+?`*>7u#=z@?CosS5p+Y`Fwmt1*!vr zXDF9{R}Qmbt8-OV3;6eEfOD{yh`%EMYlc?2nq(--3h5BH_yn6GzlmCD4tlr0a@s zi-mH$oy?I5QTFa2$GXq&9s*s>h{e~FJ&?cZbja9SB2mDwyO2QetGmbn6$~Maqh{|n zr59ry=FvS+r@>+Qozf`1sdT++(X?M+P(lwjf(2#Z8zdV6%Gemz!9y)%dNv@FBb)^$ z#RVl&5T0M>#6~Bm2uv(z(k_<=zro*j`GGTa83ljxlys)IR4y_sQ@W|gd21LU00`6a z@x~@2RSKzEceT1U1b+>&^a2-s)OB!N5whBDyl(tfh*vaf?!Zo}iEvJ^m~uv`cBp?2 z0kkL@)hjtAaPbdkQ}$K<)SZz+>0K*BOwGkEDxjd3M-L-QI4nCt*8)v$)tTK~HqGXP zPZg<;uoQ@{X5uV9C^RA$X5qXO>x#YR!+YNATMF2bSwSZQpDA|zUem0HQ*9e_?EwHC z7d5RUmVGd%O&FBGoQ}C&1Xd`JVZEhXU|M8Q(jep@uz)^U;j?^v){iD^`DlOjcwPP` zqWLoFd_l#^UWWc=G4(%J-%628?}X zZx+^4BZSxZOUj^qm7=g<3sY+QLwNJVT|eEB7<1UMe0ud})zN5CX@5^z*`Y8KHJ)-BlU;MfcxTz84ON>ycJR-9i}v|- zi);TRap~)PCp$MC>?MU)mbH|4WQo0HmAzg-a!-?-sz4-a}E+MbscQutPfc^s79(~ut zu=@(@Xsr$Lj`97&|HsB$mQAb_V$qGNmw8iSeHAD3x|n|h6w8+1r#AwrBf&LaNT0hc zZrw_lEOO9xhk8Oe+l;yOF&Nw^_s4;$l8YviI=?qMq8GR+CEc&;dhZ8^%oeU68)yYg zf8aO=())Xs(NcGPiHXYBdZLyfxI22foaTjumHYbSV%&NZM{5cJlZx*9ysuH#m)WqX zD_`Fp7Yi0|X?$!<2}(X@<)Pjd&z-e#-$1Cedu+?Fqxo7E111f=5{ zkSdJX(e6w)UfR(glthP*CJwzXl@zF1Ws2@KUy-_Tj>-6VL3me#4eeWmSRQL$cVo5- z6JlYz!v7a3YiY`tOA}T-y)W`%Z4eXZyM9x&SW5MbCCtbT1c;QY?L4dqpZ;u^;Ad-3 zb*}I14?BumCE;x}l=$YJ#SFUI^^Y<=PkgKql{Azl0Dr@^I-<{5M(;$A0}OO+>z>rgY%YZHGN-th5D&awHb*+(&3=G>Py^xii4 zZQX)KVG80~=4D88$4j1qr4^gKZ&J|P1*aJP^YTCu8k-)QG@joHB{>7<{vQ7pF#pn& z3bAK}BIXY&>@BqWi7mpZE5|7mh}}&Kuy`xisEk!ot=64&p^mc($C5O@;W-53N9_MK z0{chzj2d_H34|NiPvUwFt6qm^G^(A~>Mi;|D~?+$`{2>nEZEA&sep$37oq-p46@0g z%DRf1z{I>P3TV8FXRVC1I;MgLEl^}v>ik80eE)FmDO4*IB{30NQUpZ61I ztUgks^fLu-IJgY1Yr7frMxd%NVGZux+*AOGRAta2EtEL9DfRHUQE_?%Wq4EEZk@qM zrzJ$OodLEzx6yk|%G^&kDv(52RY{+e`}oHp_{6Rg3433=-E@byg(c~!6*}(~iNJPr zfBP4UH-?sHy7bmAbZNB3(zHz*^q(UUZ@H)$V=++zBbE7PiR{ZO z-J>C9mtof|ojIyyq*5#r=xex+%$ISg&nL&xgkAH_?b^O_!o(xCHzm=-?tS4^lKs0O zAwT!>Uz+j$TM8FSl(TQJp$_?KC_5L8XGdrOeDFI_qZt&{5VX z^z{y-Iq{b}vm;>`}0qPjAjqcvHt&h}hO_)*F)J)i0tjrR_U*Rw6| zW#knL3~Cxh8dhYOBbJWbzXtBJtJzEL#Zb9fBgYCdZd;7HufI>vyY{h);XhUWn2Y)< z6yMezIQVG24B79_p;z1Sg5SjFV8?5Zh&3_+IkR#W^UO$!m>!jn+(U+VN0FA&anVv{ z>%Dpfl~j?0voS1$UlYWf2cNT5qXd!Wisa?5O}&8y|0IW7m0iorN4kOYbd@sHLZln5 zv$)Z!$Z(gb(96rFUsI>dpacOVue6puu$da?iw{gj6s~R##MWf$RJ&yhRYlcjgyIig znT<#cEWm=}prmP}E*aD-GV`Ba@C0xi%GF=uPJ}hB;dAfKNolLJBy0(yw{9aQgYqk# zX~qNNc5dEH?D!Y(MzaY_#xFz2E6HJ}O=dwV_0F%R2idRwJr=t)pcl?)h<$q8Q1~V{Qg4T??E;X6zy3jH*(PFm5!Ik*FqTDjCYJIhz=o96G)HxqXdPaX+=gFO0e%iWLR1$@sr452`st5 zY4dtVayn*NDyKHXIt&ldGvc?yhG-YM4<`fD}JvD+ZDf z6IB(@YKSQ8-l|G1BV+jACD5s-HBQ4fq>=()g8A(CzS=DQ{NT0pJB`PWyh-u+bS-Oz z4HJG^Nhf8Nm`Qdc1kI3%34Dv;q3NeT>R8C<4fZq|Tyy4Gh?|XietkwI*G$J9m3UUZ z8nd*1{5klGz5Qk^vHx`@*uO{wxjKdB4XywvIkD?-otqk?1#1VB_K+OzyRy42BYL0y zdusS6Dygb{0hc_$lkN_#nKTI)J*S~mIAu8?ip;tkv|r%lj(>5LevI(i*JLjcTczF+5+BfR)3OQV%UoZc7%c&2h>ewM!C6qv`6CZH4OwMo7=C`AFLlpK)gqS)zAZ3 z2hW`=F%gfN3OqGK(%cT>qK3gQMp{&)(So)4Mf>Em+yVw*X-VO|s@jCYEnqVBsM^h7 zND9b;?X4Kj5)j+&CV>aFsjsgM&rw%MgbHy}yCf;Y@#w1wM=|8%45ua9D(aWq@hLHT zsh|#x<%}f%4{2N+k(m_AZ?!%W!id4L)yE0wAjpQ#3*5$KA zX0ui$%OCgQpm(eI(PF}kJv?xJUls|P>D`g)f4Y6xU;5Cd=!=wDu6^U?Pm#q$h24a` zi+rnSv((0{es`2}6|O{VChqsY2Bz}D_c-zhcZ6OWAc*rk+%-uQ^F*r(a#}ddox7W* zDZt1#=y`6CFhwliCd=YGD+%YOQ!fa0jN^`G=K-%V@~F`}HY z1YCbIk57~5=n2cz3v#w~f**xvhhZ78!?hS97)1|cN)u_`To8qV21?+wiD?LKm|ACG zWo6|DL1A~!QK5Z|*hnqCZ-h!7)Kb9wq9VU#isWK)8KKY_zxFYa+4l)AZ?z7=ebw7K|3*$ZGSl)d6J5ba5jrj&bLFzX6Z2Tr>DCn(4Jrcwg`@2M1+CIgJJN@YZ z)$0)2o39O~_FLi*SWAa0YF;dBjPM3#+StQU{aCj=g|^j~($dA#Pb?y)+FT3g*q@Kg zDuC~v|Jl=bbc)o$?02ZRzstVNaVy9CTmYUJJuHxxyd@}IjCjZ6?vJu2u150QeBbdR z;v^~2L`XAI{a_xm5cmjNR+!e2Pv?fPlr`-{pNAc9pGr^}Dg1dNtFO@oOP^ZNW96=? ze2j~G+Rc{dG^YD_4r9Z)P#YFe-(9@d!(3ywhxmMNQj$W`a{>uR{>k@$VV2A(KzTp9 z<^~g~WV}~pJ!_&bgt5XF<|^rOKMZwtkTEl@aG!@)>$loR*Y-{OlXr}~;T-f}v{q?F zr;aI&bTEK`zIcN#;KsVG^tgS8qaC06bfYkVG=6l*T#-_)y4h6WX05Es;p^SkywGhM z_cEu3rr!0>GJ5*SiXZ)NPTo~6 z&!jK+fB6k3<|AL8q6w>HO4w;7t0cW*C1JRXO~>3=&)e9O=>KZS(BoDc@y%I+mV=sSJyOa?m@j4v@SHwmEayK zb%amN^H3j0zF@l4D{5;rn>#u|>*M_04_S7wF@O95HUw_ZYH5vxg%tyZMpFMK$u>kzHfqd_=fk&5kIo@v1b%etnP5&E^>7d z-1-;f5GEC-Ow&yj4Pf)$TGq-O<;l#;me~A*UU4Vq%a>%Gx{jm*r&TT7l3KDOwxK## zv)#zwuih5aBGIYi?~0ZKGvCJ3V3El{v4=w@F`1wML2gs`-gWLt=c0Z0PACiY=(r6< zmN&3H0%`Nr{rdQk;Nh`B2Yc;qx4^9z_Dn_{({9c#`p4D14nOD3pw~bN8$hCw+*oEf zcLu9yH|?c+b4va9t;MTqYfG2c&RbH032NbL@=M>y7KHsgPdbMVV4V3ug4f|%d6`R* zDzKN_Lv^vsk$-_DmLitQc~}>8jc}tR4C0nubA?5WaV(az@izh%d3HNodEaHP+Wb-e z&E1IQ#qYTBZA4m~q@hvI49Bv?7rn|St2&N+3ySuh`Pb3Cqo#rJBE1=9uV7TuEi{zK z$ag&P^%}&RG#k6oBGCuGj-Rqika~gFJJ#iTmGXy*reg?Z0=%*K81_%Y*jl>EyP;+l z4$o(^j36r;!D(C&lNuyM8lnPfdiDH5>qgjC>Zw*T-KH~5=q#|uqspvdKtA^CT_Fd+ zo|N`lRte3fTb6<>X(CoL8(ZDEI9Js-E%a_Bi-r`#E-cpX`l4nQ=NmZvX!C)NJu%u-~#KcEbY z;-m@Ag|Pi7)l-;a{nw6SC!oK<3ZUd*3o5kNtbJ8}=T@KuQZ*h9dp0Q4y;MwVm z+0B5B6SQ?cyEV%x`Ehfd7u!(s(a=Zyn4n|ERu#E9^q1hlYcQ#Z+t=Q0lio#|oT?`t zwc8U$UzWnj$&6;;cVUcFDmtxZwzt?gPq%fEv+qbzoX!CFDUs_b?@OC-=9*6B5m6#) z9Q-U}Uk@=a&dRMxDPTuGmu7_J28DLdn);Qa7|nn`XoIGd;Xb0oZn@(bl@1c}8CvDO zzppanoKa4l-^_LeZu#hmEP+r0vn1Iojh&=29k$SHP-y=>6$)Mj#^0xBe!0XZQIgJI zW{kD|YklOFxA@HU`~TbR5!=zd?j9;J2(#tdUG zksIZufwcUzZyNk?tntjJJVC9Wqf4dy8^~@z0j;vMsc(3iYPaTrmPCxzFY0>rkAo-U z*NK-ApMHw<@2PdL^B+H@8W*tit*}xkcomo|qvbk0G!Nc)dh8`h7c|xC#=qf1*XUY4 zDzH%-R+<(VP9*6JHwB~!kz7Jg0c2d?wcU>#d*EJ@ddjaE7Ah9*lMp;yPcv!sqY6+& zi$e~GB9^({K!Wa)#p=}Cegg*yCXDb=F8;6j;MUya%NXo>!0G=)!$r_2$Z4ja8O)6=wUIZ;jvJ7>lP zV^JReI65X1zvoX0b}*~i)&(j+E3X?1u-QUlS}ZrbEJ3FLQly5Ok;#sJOr9p}A2`Tf zN2`2GL0_nmbgX?em zVWgS(re648=6<>(Ay;>HCF>MdXgI}v4gmgpT#p)bPq!H9tYE9!;>;qbE!FGh+rxy0 zGY2Zah!gMCrhPtN;ovenbab=9we!uIHoB0MF-g_#yAKV!1igH5QE^&ZuuknkPe9yp zu$uV*?48y85qzj9aMf5X+BhQHtR~;r!Qy*!vMQX_t_ggp)w*rg7Ir~pPAOQ|Y^yG! zD6jgRZ0wJN6*m2<0v#3Es2JH~zP?MRv7 zUglZOl$uMh<)^bcit8Z_8*37e>{$@=f-Zk|hAohPSyM@2UjCCyjjYOMNNB&Uvr)0H zUHO>&sZHXQZ?6EFb)h*Kacza)aLk3=pLT&w(}-o(^!M$Wr`qHN)FT2-n843VuJNh^YVjpe!RJtT`D@?^mDKN7+nFV3f zBB5McLtK->h;D=_kAdlE`lJK+x=ZnSPOeFzaDqHV)(v2Mds!%bbu@AmGw^v)GkU>} z?#0CfhbKM=_>?aJfW&GtW3R^}6Pr$?3&CTzx3ty%EtLy~Ytv?9J zm~5aV1>WV#u{lNGA}y6WluJkXY49L~X0b+@30&Hv_E6tKZQ;xj!q$3v|PJ<~El z>neq@ZYSMsQ`n0@l@02+E8VZSo!6uB@70_2`^=^P-n;>lif(H-!mTX?6lupnZGXVS z=$AdSHP~d_%Bgtv)i#>v3n{RqAzP3I>C*L{_R!MvNu()4S&Q-^vau6H? zHenN+3Zx z@LojY%l8Z21E!g1!q_Xf%YpyBfT-+Lv=0{fMFLkQ-SvI!tPUd}`idK8evv_K9sU|e zC?A8Z)3r7-42-V%ee;x-2Y_+E3e9(r@8FxzUL!m^z+#tHA5+?8wi?C*1#mf%9h-U6 z!qQ$oUTE(;dDD#fXgpE-O1k`BPxHrth#ADtRl0iw^ru-_nbDjg`IQ%+Wz69 zrX|G^!yntkXpQf2AtCdB;r{R4%l9{$PQ^@T zA?CkL_Kf~cNuY3$4w`QdRk@_qU zsl7k>PB_}XBw-voqPc2-fL8I-RY1?Giu!&ts4sJ5Jk9+)f7Pi^uY@OV{@=b9Gzsn+ z0M?uSVNFA9_Xs=|LqB7h3xQV%p_DVj0%p=rS}a`Zo>ss!jm}^q=Fo&7?6zP(2hty? zcI_YvN7fO4GhQ$Mm3bD%>Qt0l(eBCZBaDQekj^_9#?I%8}*>GjgG#DAYiOwrAG%v2-<>zA3x?de0 znh6v0Vrc^g$r)uUpI*#qD5VEk&_q+cDIqORvYKakhhcv*|6#a1?=^r+LP9R5BcDY% zt(8bw)rq~EIx{i!%>j6M->-NK*vOp@NDAmQ-K0lHfp@Lqtfu-yxdt^)=1EXg?PA{n_*ptER>c@lEWWF(Tbk!;Q|tnXy{DxkVZJQFYcg}*GoXVawVR9MODg?&hlf3jV|5O-AdGB_J zj@vs*bXBo(k7^FKsTF&NqO{{VYhE^{V7N3vw}`#dskXpK>C3I`y>G3Vsi>XohFL7R>`igper!$g11I4ipM1>l^RP2ky&E2S#fR}Y zZBxYYtXXm~KHEm~aq9arOf7q*7S=8i??ln1TKb7=yY2ya_wH6RJ}u4Fh<}wO1bTq%rSwxUuWU7K8}1U> zXu)HCB$@cg|0Y`a*7JYaoA;f`(2t$%Hjk$`Wkd5Wh1JAYJ>?XAHuJb-Ex_9&%c)d) zFy^oE16FS&%!IgK{Z6eitKex*!PN&R8ugQbHh0hzQERGF#%2C%mfzdA9Qlb_BeDS5 zh&M$F<%JM^QF(*5ci8u>m1^%l=dXnoaw;d<|1!#(ocAa6_0avbV zd4POnydB*x?qPA;_kiMXg`hRIg zBsEe=QTrR7`2>>f78N70*KvBuCZ{Lq=$J6#iSRA>YYp)?C|f-=->0N7Uh}BEA7RX9 z3Q_mA+<(A-QdI@)K4~}DsA}&8L|=T^EYp&2v>T{b6n1KSoLI`Jt1}|E*~v;CP=^FCQ;SzZ5G^@&(46r0cWy?m|qXwstY&XZFJe zfG77i{Tq<$^I|jq>^mu@xw1OnE!MjqVaJh}?N2*~L!W({t5>x2N@?3tiRd@YX+2wA zIo&v#zi(!ijc(a;AVm7cTK&sCGai0;beE7C`%$TZ-sT)04eU#o;N1L)%+5B&5D=We zhX*oWev9tCfxVvyTvPl1!C;y@nY(w|M}L+o?YtfIo8jHbV(hK4prfv~4_x?{$MEkQ4tTTw%X-TOm@LMS7cjg|wpWap$YXq)uY{l* z|7IrzL?b^8w&;h=qt!nm{qI;H&P|WIYbhe!kZToT%s&rfMR=S%0~%B!m>pAb_OUr$ zvy3l%%dotSXUFQ|C&be z(f){UPDpoiX=g$cF^bOSL2TjcvToef?{TH_hxg}9$0%U9ulh9ta}1wl_~ZXaGLnvF z)WF;F?wJ+IvxIVz_tO}E-|I2}+jAuC4OZxE7V2wGx1!lHE7s}y)l0{dPTlI$Kq#rf zDpe=FTss(^jOTCf!?{Gc(sIA0M>6OyTJ?%;YrJ$m#s2~fiF*nG{;)R!UvS_AHX)+i zIB*l7rv)01a7y6j8N_yLsQUK@(IZZi%P;Nm%cd&cUI&Q>`H->5$wlyjEcGBJ^~`$0`v zcP>Ax_$}~;+!doSxNg=CAyJEHFbb0R75CT9)!IQ#Gfg}DROpt>#dl`6X-0HzbgGZW z>mPDu;+F@`cfEdii%w2UbUmNaZ`>jgo!;P_s5h*V0~TlV&wsP3JU67zQF)K*vOJvf zm%K-K?=pNW<4nSLY3$y`Vyl0l>&-H4$-?%nH(i?lf(`}((3@f|Fy$a4GYKVs(T~$j zirW_1+1>mP|92LWoM(kkBr(5k|8UpZYqRr&6b0a;9KcM|QieoYSZ*7gHDHyrPh#$O zls<1eK8xJkx3AmCxSRbWLinxQ_a5e->C~A8{vP8(%{ygX8#S;erQ;Wfr9&jb@cks= zeEBN||Au>~6Lh{++ls!I8|C)X9~%$94*Hk0BypgFR*4NkID>M2|HcNOBUT314IVou z6}l&u8<(>EQmX_{q?pCy&E8)%4M#KOHX~UMf;kP|h&TM;2?tCgt2@6hjF-NdnN~j$ zlxnZ|sEq@kBs_YIb}c#!0pAbrjeF<=9xp;sAD70VI_z@y^f`5U`Z0s#P^;4#Y`A1 zq5UEe^(MjfT`U0?72fgcw7)LyF>~DWnO%t|)#v&>4E~x91RfTxV+OA0Jy_J8k zQMW!m2tu9(Llo`4pmPPhcs$@k^HI^!Wm-;IO#6N6tCldo#PEK&9W1y^URf!invM<> zTupN3J&2%R=h!;Ztr=G^QKu(@2cDdFA4W;9u7r?**5hAlL~rqupM1dAW{vX1it*~h zv)-HYeR-NWL9{kP2D0&gwl9CV7r>h}!`WqW=-yL$M`fgMGed`^)t4@oXRLc<{)_^3 z8HB$1Ng|QEUVGOs8=|Ow_e73T6^6qPIi)}3M&zfz%j%dr$6d^=tgO@$cbfS;0$ZKb z298MfA4e3`Wj6j%+YaH1f^@GuTaHGclZe{D@(tONY6JypH`!eVrk5wYTOO#_E#VwH z#gyEVIQB-ft7XbD1^|1p>&usPGY{tV-17X*=@fq$QS*(}U$oN4O`5cQq3WSC3Qv~% z2@OaEp?AllRR=i4&2wgg{JKDDFt+$zNK~0TMmxqz)BuV1fsslZ!)Lpt&S=h$hBbDO zY|N(lhKx`QTTu~gur1>;GHYIZL~FvH(U=XjBBN?VgxUWXJ>mK&>r-wVAD2liR6r6M zX?j5IJUZu_ur4Z$At-ulJ?KG|t8@1G)bFwcQ@yoc%*aDzAXWl!b<3K+7zzG?hPL zPfrK>`3pfx9bwGJv+BQ_m_XZkj`?#C8sLew`-V0%&a83oo(A&_Kh~@?O#ZbxTM>!o z#zNBhY33`f-=3T7%?u#_=+L%((ftJC@_2`kl0cDvsYh7>_VSP}Og^JEZOR^2N+Uz7 zHUf714gPO-x+8-9zGI%5kFtKU)Ms^pboov0OO0_GuvO@*?ga4`wU`F9p9W*bmWC2W zS7MqnLpSrPtmjnv95+^1c?>6*kNlh`T&3?(UzeO);xc!Jw!xp!0z-ojA;-V#zJLcf zD$)Quu>FS}HW{xJfU_LJDwUp?X8b6$&g^#D1Z3!S2v52>O=z3E->g~VdSAkn+^w`* zhXn`~C5(LRn+IK?ZxYPT8e3DpajtQ}H&}ho=}@g^(yXzvm!H3nKv;m727JW7QoPmr zDWd3Z`hb!lS8H?Ce}BI{^Pl(QVBNBJ7T!;8M)PWoM{C*Xhg=e<5oXkz#562$KdCD3 zA_{OO(-COWiJA7QFL+c6h)W&8(f7FTA#)@2-njmuA1?$D40`qAb?8=qc_hwVj7X|* z0L30DU7?tTKLX{;)*ReSk_XjgG?o9zTebi7dv&Sjfj7Hw)$J^n&*~@qWNGo+`}X2~ zf&-Oi>>0=xR{ML0{JsxyA7wmZKS?DjpziI0T@D+f2D_M2?QT+x^}Ct#ll)yDTR*cLbF$&|s`_QN zSJw3<_$F4_klO}EgdCVgO`PBHkiUWG%P#*k&r(7KIlJq@#v+I{0vK1`4~1?zg(VDQ z{v)jYD0X+3px+bGAqdNM@Re@|g<`Bfv;mLCP{)0Ez3!7yyMmPfcy%%j2z6(NkvaAI zsMU;ROF0o73(p$E1;1&Nj@F>|rWlS;B|vMzg77@jl0=_K@zW)k$?h8r*O!X`q5$Ru zoCTRUb62tg|TJIb$$`l=~?W#C9y-bs^#^KyNBHcdqPAZM6Jn`jWhEI-SewM_+`XR z{~aD;;BD7J#7;p`**lD@+F z#RHc_0!~HGR%}%Q=}o2aZ|i|^E$#O2NTW*xgU@itsQgFtuy2@6YH zmGcyb7$eaq&uPwsOi_{q5I7T1M1dRdM>7F2d}BJifN;&RL0mdfFR?lwaV?SGdot8lay9gj6LPV(H z7c5HP5F`?JK)RQiW2Ig-GWh=9jQJ|KQ#n%Q+{b;Jr>^wsFPh1W7x$a|%6R?eBsIG7 zF@Mv8XhdI}Yw#zdPf-4ve5qwTCXhhDvxDPIac%~fQbM`w%}Ix~mCOYmewL62!cR>> zNq)Jqiz!j=;)h)HQYSs^FmiP-m(+KyyMZp%#QjMV<6@Tg&R#l0J8ZSC8GU(naZ`r$ z%8%7zX+V-2wKK)0jKF6*8knZ1$(nM#F>gm+i#P2%@mYj<^L~il*8T+8H*xgVSexiJX0srQ4diqnoOrq9^K9wOCxZ!TX|%1qWGsuD z4TX!IgWjgRyJueKUb$_xE7~EZK!8Kb^3{kiw~6#WUYw?%#+jK9+50nEFl_uXi-tm` zn93vlRr4BQ~Na?8EQFk?w~J zq_iL}i`Y3S1HARuyL2*MdG$XRPb>H~zDhFjcDYA4O>hRsg~}_*Kc!&t=Z=w1p;-P2 zksrKN3M1){l-l{scH^*;0X}}?HmM`w14ZELkg3C<>kK9H6ucnWl)+;6<29@1(UB`RNjEx0x`0;1hu=|262uXhw*wAp)Tt-U=s#(HW_F_$sO`Az{?%yfD zs&*12um##*B*=nGf`C*i?>E_YAkN;rT+`)KDLP!zsK}=;WlT+rPVsy`!NCKdt1OViF>8tskS{_%*Cw zB$Hef{>P?d@%{b1E90|#T4S(eS0TwZRWFY)Ub-o08g+{_)2+Bi4_H`|kgi`3a7$BE zP^+sgw(qoc2Gu{ppJDtJP#vb-n<|wN7lk*eJHJ&re887J5AoChT_M78+CsXSwgn-wZgob88xHx`wmT^t{HZ82AHxUhM$w5 z<|;nhZz!i)$dxcA^hjGQDK>`g>4@pRqdL6sjSLMOjBchLX+sfYc76QIrS;fU)kKyS{PX|h~{;=}x`DL2){zQJD#@h?eQt>|# zD0-MTPJsB#HAcuTS6^Xrqu)#fktgd)v9S5c?bny7xi_{ZVs3hW%e~dl|J1=@>wPr6 zc$Pt#ffY`kpD?yS+6!)!Z>LL6^O@GsQ2AF#0DjI9lcejKdVNar^dmK1maA9E3;Q7& z&(CglqBF^oMI*C}EdMTK0ENY~NIDyXl zafgn4W8ZS!QY(IK-UlQns0Y0GQDrxQ^2Iaon$;Jv8d7IueyKj`g(eYZ8MT|im0K5% z5FY`ZA@~Umntncf{)`XZqEb?Czp2~Buq{w^_nVsxVIvdX!W53TEnYrbEZpRRB{~30%Hv*4IDqp2wOO-{ydYc#2|FYaRrOLm%HhAJLq+e+u3%~wRnX)4_(R4M+@PWq-hj-_kVBdn%ga0s&B&a zEfARvH_j&C{V}Mj)$>oz9$u<^jmKh7q^nIvI>sp5*oZK{lF)jzOSrJ%JjHD8>&KLd z@mTJlqwSWP_n0H`Jls=bPfs7nPG3Cu+5IO8JsvWZNe=G+P(Os@Sx*Ke3iUy(cJm)a zcUM*cwc920TC+=-Zjj;~z(i(5(5688A&|z zNGIxK!>QHsvXU0Vh6oVgj>A&F6Ar{5?u#bG^at>XVlPUNiQwG7G)T$j21??DgICQD zik?3!prrtZ{RPwt{Iz8h2!%oFX5A4cMK1-W29GZ)ReXfA*ui|~ZWrCjSgqMyx~l43 z0W%#a`r@#rfVQ>mwdYE0_f8viPkKW73W*HCWuHORSrebI_no{#$QAJu{$?*P(UYZG_@C*MmS$y~UNE zVi%-j-b`DuUzu3>u-yFEj5#)`TlD1s2J;_q0=a|Aba(tB5qq$^pcx{At>U1eyBI*T z@rnIez?`xSb~}dn{ip#_{u6z2!os*UY9)C!j9^u~6Frb@A%qy-NiKwa_(=nNYoV1b z`Kw|pGQDvgg26qaG&;8F?jM^ojuODtKR?a~%da)er`o<{4c|+qAxNeJ*%`7NUPNf8 z={&HCjs^sEq@UVG1RcJC00!M!qU+&D2-2PUd1BU2!u3GHpCr<8vninyw^nx`S<>dHp}3v=sa^dS2s6e!Dkq}XR=4yGZNnmlQ|Ct>^SPxKP5 zeXAlN=2Np-w3zS1rT%&hnlaN4lK%#q zCN#r0LE1k_YEm_sTJO$o9XbY@!ei5~F-{dS$O}Q>H$jxz=$X8n&e!nG5wSr0%KQb$ z58G%w9K2LNe)g-AcC?Bt23ZqqXct z-Fnw=|G-Qgs-nB8ifi*n;_U^+J0c>rl)1y$g}<5GR6dzTg*kx~&weT zE7+be{ayGKYoy)-+WlJbvBhB*@DY%vaNS_4@Y8n4P){%!;oX@J`2a`niwHIy&}%E+ z=tOslFCtsiT3}NTOc7*FkdG6ta^bpo;X`h%;@AP(nJ}E=p<_F+IXWJHCVgS9V}LYZ z^;o7FDI__M*?X9!5<6L>SK}C|UGJWxDCNprOmS8nDxbu=DY^9uC^fE7IypZ5cEO;; zuD>5U{oFAb0Ajb(baDhHUwBzH5|KD2!&kFSXn?OrI97t^72p!2BYisY?be(<8qb>z zTQ0W|8e)+m8k2dJu!nzZ0z^aoGh8!7>oBYR)P3zm61OqsQXV7qkO3ZbCs$X4hyIJ) zt-d5@$6@OTM=2;{5E(8vt(%f$l$SCT7;FHlkbj$VZb98o3|Rz9Ew3NGR?Zf5py&{w zIUxKI1=#ujh{tbse+f%#%!&*dfjL1FvdiQQ=>5Dqpf2NG+ujbl{34%p#k;?4YAj`o#|HE}gKn*|6|zwwy0Zjx_N75t7Z8Nw^PA?I<6c8# zJv(ZB4^Px&1h6a6Tu+MFNUKdu!cfKlNR#uk)QLOqe@H7eKKlmi#V>DAOd+xe{I#7x zH_H(jS_=S|X;u_@fZ)*LFlY~qBhAX8OOD#tZeff(81z3tz3XlKc=_ghKfWu$6J(gp z#6@`xVi3h{X%<{|ah*b^7!77~oIF!;Z1q*3i;f!`&Iha`g1ym3*qsTf-?H#L-?gaU z>qE2npESJc)l)KBdL2ql9NpJOH~`>hpAOHB?R1*;J7ddBA{xxuvDWt1!}|~SrTCc= zK3tySqEKwH8Xu!e;F>ts6NO-i5Gfr98*s4yHVBe}#%Xd6D_zeD?4ucJ=d-g^=r9 z1k6d&fcX#Te;Sl9k{x(WQAfekW=hX@pSLD`fL%mnyc|ATd4m?@4eEQ;m3Yz_=$kRZ zndU(g%e~xX>z5GTm*A>YD}4{Mz>PAi>u6E1wSU3oanHzVi?ZpReeU{mEav1Ov@=&4 zea=vA-tjBl>i_}oEf7Bb`2HQ&qe__C0wb-#Z< zL(Y_6%Mbaj%5{>CR+_2)f)H08`ZM+|7UV3F819j|G_L;JqX5&8Ez%#s?m5Ps!S_MD zNtMrMvvHY191+hfeF979x8_LAjK9Z#ugiViNdSY1tKn4uFkR&YJiwL_s7uNfuLmPD z>w>M%{lxq-`&X=PrYHNKA+x);%}(Dpq1nd!jQD(0GY&!>okv2)dk@AkZnqxfx$SSs zN#D&nIdt*$a`r@uGN-0Hq4T77FZ`3&X~WSC zW_R%m&JbDGWfCyS`VF`n#-CYIaU>V>$%X82@;GQifnkZ-6@PZ_GDZIHtq$OcjC?x& zPEM0Pxw7K0G?V8yjXXw&_Gid~a?OQKwtY-y$^UU{KwRKIUd`qNgGvI6W9Oe{U=cT& zrt*@)S0EvDFX!~lBaA)khPJn1`2R-<-`C3ihjXcyeeaqZ&1j>D2unDUuAu?xy|1_w zHmQFLX=yS7@(wWK{9B9v(*q9cp*evq5tkl}g#@;+-SBa)akq1r+wIT*CyM%gr?60Y z9Ka@jjnIUERRs`vS0lcETz8}^6k`OVWWxW|z9e?lWUuK0HM5qVhWf!SOL4Ce}`Z}EHPZ` zflJW+~F7X zmnu+E^aPh~0_eqEsDJj-=MHJDX*JH-;VNU-lA1NkF5TuUng2yOmCzj48mg1N+&qb| z4l2Z$Jm&ebXNH5fzQWS;z?-%atT`*EbQ4DpmFrY-W7_jV1DNQi;78jG_Xym%Yn7gG!?T>>e(F()y|Ep>P2qf3wX84eiX0R2GcZSqm zSia1xTiRXkeCzmIgvqH|wv>gxmHnpu_?M?0UDHJ6^9sI?W3jYs3e6|V1;gaHtQ*#B z2<$%w3<+Y&APsiZR9vb47ny+$4lc!Rp30`#@0bs2rMjq`$?w~O`IH>_){C+zvVJ}; zszaoSVoSS=1O?6^xjHPtRBJrzX^3gkU4~!Nu)$VQEk)ZjFM|IwbbfaD=)a-O=_n)s z%t&6*M^+e7R~ae~Jj7lQyV~inN-ZrmuC4rx5dU27{pT|GQH+!`a7`;^%f*ch7!50{DBj{+P%BwH@|7vfOBf9KNS`JoU3Wko4BF(P(J)t&n7B9-Q8WR@^j8!5 zzeehD1b>6&=>$YKw_!xXrSC4caW4dXG(n30E7!SEZu*lfrDjcNK+#&ed&@ogTf1HinirN*CVf(GjY5PY2qfOrZxo(tpJahVCz#cGc@ zJK5&rBw8n^pFoT7-o9+?O1P?@d&TDMffFt9M>MAYQt>`oPx?a9oR zK?9ER3K&4OG4k>TdM0Xg9u%zX9-9qQVmOXOh0^cGAiG83j?b-9LX^E?VXdMfhZ%W( z)sG)gP1bIl8sL8F04d@0X%;@)p!>h+Yc&+3BG0cLd~t8H7V`e#^4OtRVeO|9*NSMq z@hUD)VwMD>Jq9r zEKgcrPJZqmO!~9TfZV^@69JY7mNsyjLv`fhC#pi9AN54LY!Kc~P_gU{h5TuUh@R>R3|F&)@|7W@PPrNC`s-rH|po!>%s zTm-uT()8TY(sEPGamv-y*?&LISErGE=(o-y%?n=NT?zKzv&YT$stZ%K#wSPgjCWKScw%U~ zb_VgTGZXZ-HL#UV$OFuE)zw@*Ww6V%H6zZ6UE`J|&V(toN#g*d%{y>D+mJXQQ|eXc zc(M4*3nib~0FMPY-tw<7W?Ay+&ar6Ub-!WUY8=P??NasxmjIXH&Flx)3%rrn4na_$Bjdw!fbbqu02}s~%tEEH&Yt zjx4I6)nV<l_fvGUC9*irh1opcc!$9?Ug$`wG>xJIS zQsa0f57n8?%Poh_ruY#Gl5-IC?_JHu$j+|h$ELJ|YrtJg^T%NH&p^vBmA`0SmR_Ei zY^@*!uN7j8pKc3|qXb;X^vX{ROTi(p`7fLm8;D(G=#ig~`@G{~#IU#A3S*66&7${O z6Z@ZCtjG@rS$0+~F`OJc4MbY~v3UJ|h;1*3zPMn`N?__Dc<=kv*{u{BCx=d*LSn&< z&rZq_Y7{w?cc|}h=6Zr(kX(3j{CR{0jUF(sV-7-^!4v_1{j*dCwU7F&0#p_J^_%DC znDk-}9z|yF@YdCp+TO7%v6Rc+A{~gAgJryUbFCl|;&50`2q!UI78lVv7XY~2A1(q; zUM-Bk`dD%~{Il`>Cym{-^@%JCBcN9H*++rTzWz|0o6wnNJ|p z0sJni8J_>g>+VC>jtDWM(2t4DKc#IY+6JlDRRQtTe*XLa2vTU z-vmCeYXLM4&FIrmzo_-lD&yX^gg7PDVV^~Fw~dZ z9nDnT&J=t5hvb&vlowTLkQRBuNlGHL`gGc>(paS|y z2i1ndNwk_89q8C=1o#cT8F@<1_5i2LR)kqvo_%&0MzPC;%P0QCK7)dOot7UsDNTur#$+NATK*fRR8+rsj z^OJkCcBAX#$%-F(>LzmwQ-EdA$@ciq@R-ucC6?w0s+<9d)r{_PCG~fUYIui}#x$qi zKlLUydvtTCrEd=T?)PwB6w1#BSawP5vVlPDo6tXT%kZKy&Db?mnPG%;;bNQ~@&~fO ziz;^85~OgWzS5zxz^1pDke$kCf(yf#ZRlH-64Vju^_?17>@2k+?K<0FXijb?hGH~$ zx~My8>GQ6k8t(#44HIKwfY+8pWicjvsm*1SqVTsisC1s14aeuw%@3_!2RYd~MR=Ak z`9F{XdCPcyqk8NC_coP>v>uHat-$e^)@*|?xcW>O3mhLVBXP0R)^Q+ITvAokSN0`=pEJ&3;OSLzvKvkx-iZ*!_CdIh>S+q#nX-gc6uF`F73EV!dm#Zm z3wnvHA_T0}vG;>(D_8le5iP9iwvGoCa$oU7H8__Z;2f==Q(qm7>y->@A&4}kFV##; zm%8@b5eVd_-~%hP%{l96sbRFCnEE|!q+xC}YW?d7@)zn|pXvjdfqE<)fE)R9Vg_h` zsCb)#{ucg)m|98w3isuQT}Da&2BLi8-I=f=iV;Vp&>)ouNReL1E-o(kCpGs2UA$fk zy9vt&mhDcKYAS0l&Fh(EhQ+b5#~LjtPmaL0;@4<(QR=i~hSi5Ia>q_K)lmeuZhmZB z?&T@3Mp!F>&K#9byf%q}95tDaal@4KT4`}90g?U7dBW@!ak7|KFt%_rJnqpK`UMv5 zW95$w$|Z{{+$muL*?dM^O;E^t!nN=~Ray{K@hGGhLsi58KF_4n4Z+akmaY`|9^)+XWvA zN5IFG{(v&a!c*b;wZo_Q>ukH1)9EydhWN06pyG)omy;ka(K=)Am#JEWR{ep++BT$~ zqS!1&Va4vj0e2M&l;J{J#VxwDLu4diev%EL*66^4Fvk~{qtaY%Gcv@g*ydINR5e$* zKg%pO&K+{g&k=`0Sk!*bLeo*(ekMJ#tWF|l4B>o(>U zo;;VE*FTcEg1dq_`a6p6L;e^Lze)hViKc+nZw)x!7bS*rY^j$oxE!PSfZj4!g7gJZ zOS4|icXD#HlC?YNX)8=h!g;O9qx9vk=#UncG#ztOQir#og4y8j7*RHRn@6rE8ao^t%;(84sk62UUm4Bk#*E`I>_ub$T}tNq}=*ZPOaln*RyB} zD$+`ltPXbkG{)SEV=9f9W6vUt5xkf8Fh@uiD=?wP#yl@1UH?`Ucd%k2Zbs>5D4YH$6(OPr<#`^BFqE-PC1FhmLVkkRhcj76R1jaEM7Rjr3NEUaDJ$yf2cf8-#0^P8W^l37O0BkH>lc%mVi>4S`zLr_JR`u$%s z+uZt@E&~$rX4!FG_|XIl{z^bzkpcfT#~2~Mc9;}$YjtJ;F|pc#Igh%hiz13`z@p4l483i=F;wr$Awr0Uvmt!<<}mP~D$YPd+?SK#}8 za+W=4MTz`RX1UOzpuZc_Ke2LM69vXJqf`l~6%E^gic?(Y#6mKht$G^Lw%j%$$F%MJ z^apykd4sJNzg7U(=6AfE#`hvO4%OVRfn4_=qqfzFh~Z3E?6<23w8g(hP+Rb!#APUh z;%zS&#R!oA!MA?Kw)A-v@XUaT@*)gX?1kpxaj;ab;5vo26EZJ}PeVE>iq4=bN%3pY zAgL^M&vW&1Ii};I>ICA?;+%RO#MN^xFcJ)=*i^z0J-2Az==lHB}bOv;y!-HvC z3_Cy+N5q_D7o9f@CCbVQA`se9c!E#KGAn5Po<=k zgV*ksfRg=NG5zg_1n=6EL^y(56`l*cWhB+Z=4RE*OB~r3cr2ZUH`34HGKBpAUyvqQ zIl(ysjrkKGV&MVh8nC+0f0LO>rHbgJ(2*uXAu|q1y@q?T>XqA{V~RsBLo?fLRNIoQ zVr&!}n0;a?TmsO{Q6W$HRUvKI3k9R1R|om)F}tAav6;MoK6U2zpPJI@_?Rv%8VK{S z3*j$ z9W@6GS1zJWT>*}0f$Vo;yun{0mD{u~V%N*LP5lP$? z(d_DAhD53xswf+^jeA?dnlJsh6(#BUS%kfKY`}-&K(AZET+lg$Apfy&RdE;e3_;cu zY{1nF#-Fk`K?fTu8i%K%GBMPxY}+TL7TFWxQ}W<-{icBH`Qp(0RTJo!@LJ?2#9%e` z>R7=deqO-_`&^XLF_#J3pa?O=C42VKltSpwfIO_Ow7Gb z5PRpi@48s017B-EzVG#Ymw67k`wQHkh=wEcai(m+Yb~2p2S>iF!6I1yAp>bTU-uhO zv&WBX$p?VGgA|x1uPB%7&vO_L$|Z60wvOK3#PI^QVaPDZ2+@BCAnVY;VhI*-ye=l* zsz{K1as+rIz+T`sr{?W*laWy|?~B0E83ydPq|A#VQCI~ubRwI#44C@_-x?qznRW_y z=moMdHy#bsJGPzHXoI4}EWAZAbYDp*VQh*&oxejmLAs%k6T@{2NLURmJ4SU1-VR|r zj@emi(rOdOza(mZE{z>&W+J#m{e7huFBB!97q6+~q@=3$EcyJhv`pD{83X}hnOG}B z?k2~e3(6Yh=8WQ!es&NmtTvX}4|NVvuf6R6L(0@;JK+P)a@A08bQBQ^g<|}`y(&Qp zp763itp$4jBfup9rG&I(_{&en)`Cz?WOWM0WjlOT%uvu=kBz37ew+kQao&Gq>#yoc*iaM{`NyYO! zf8fb0l~@jwY$e6k4n&=$!6;qb0oR2AUGIG_$&Z71$Fetp#lgVGU5=!Pl1qe z&eLBt6s9>PodU^PAV?d8g+1UQ+#(B+ufeq7^zzc#B@-sEvQf3RG*NeMT!%etpq?1@+BxBab8H| ze01kdT6FqE0ZuED>7?a+^)SlHMF9K^$Y?oP0*zfI&AwWO2QEi&c__a{p7gSKm*T}3bkqRBa|!I5u8!-r4@ zh!Do+U&!d~d`dNNoZmNKeR3njRc@^^JDJm20@be%*Dz+N#Z^bgJy-p3qfV6CRE zk%`BrDsP@BbITj|tUuMSs9mg6@h(d>{0J;keM7MwXJao)O9U6adwFs#2`$tf2M<}V zZ0O}<1HVVwt8_Nxn@ZP{6B=387h@QZMkYiKUYBbMn8CMDIZm7G*dLVhGT=KqVXRtA zM#Nc;nXzM429WMC#R6AHl(5d!S%s?}#4t^94^9g3QTwbt*v||KTO1|`(ZlL7#%8=B zf_)0yz6c&wt#?(R)23IxLiw8z^7bi`e|#H-AXoOGYO^5nV0oKL_atEVY28>M+!4Ct zT{&0&nES?Q)P(6NRPoE_d9{+=uHSlkE&B8i1CaIS!@r%o%w9u*eJHOxHk>?7h`1VS zbKfuKkl$2(C%Aisq|a516UlfQ-?WiA-uvTf)hpn&)qy=hi#(6@M%RgS62?~IS3VHx zps17(Xj-yE_0Hif_iSlPKW$^yY6R5me|4*1iYt{*J;*lb+6%Fp-uxu{uTWcM>%8UG zTr{Tliw5*L^er}Ym?2QSwkC0#)dA+8j%LaZx?ed2#+2fQDyvtIA5l-eDj~zxEOsL7 zy>OPRgso*v9px8%XU-nm?#C@0^=$W!ULv3+AD*!bJ|r`hcha$1>hT)>A)DUUQ-?;j z_7&A#@_TLoBzy|Oy|zHtK!aS`!V8>3DEe*MG|*rEZvIvWYS_f?1lg701?04paPDSHun z)vly)iJJM0d7WR{acEMFJL13Iw^QY{65|b~1Lek3v55G?Q+^G{zAf&AaEZb{Rq1L% z1CSGRc;~VSmtP6H%c9c0g1MHLvQvWOPSYH`R%`Z?ei2$@Ec&O-pfkxs;t42(-oOx* zO4NNN(;pMOi~Lw7jV<;q7>wGtY;^ucN15aT!V&W+mg{8wCJsF2E(R?239qx=!()?u z*802OC^)PMOgDvK;9zCXB-@LrO;a`IB=R3T9Gb~aoM7P8Qr}jo4|N`P$-6 zz6el&sLp-s$%Pb$iiTv;MR61n%+Tg&>Nq3D`mJi|^NFRZC74s<^C+i8Oz@W4$bL1O zs4g)XJ+;SIu26i5XEu>d$Ft*oNaoA>@5`|;F+sd3fPZ;P-@H};R5dFOGoN1;QeSG} zj2%s1R~n-V5|tkufjOlv^)-rdqfG)a9DYm`vpC?`O(!z0aEq~3hqXq`=4K%vxewpO zCJ0H}G0KX@evF;lPM)!}8T6`FnU0k#wQ-WOe}oaMEg?VcHc$9^>6qac!~2OCHBsp; zpn`d(DC6#HuWvvB6xP#U%cpCaK0)^sp7IzoO)rlSTU7nVXi+$egknXcv#NS6De8<%L z{4zs?|EeJK8rA@!r1xr2GfIdq1Z|#fU#GAQ`EMU%o(dDg8?JNMsE@@|7~hYT8+VWL z>v!CI!~4ZdNV1f2YOOzu2hcjPGyyLhaV|A0zQ`R%OFGzP4YfGZvB}6* zKN&ASoaJIY z)ely0*Z?ftHP~TZB2eljC!ztUicgAoY>DR%%6xr}fi?^pKHDM13cuJ>zReM~}PY#+-L`T0DQ}R?# z%QM>PPxvk|c(CEF>VNa_W_TOZ6N6i^()JcArnpLaMp8r7Wn6+%R7U{Ux1Onqy)tMy z3u5kNZaL<+dO_2?@k)bk-8};PXopl=HmaM*j1_&6fnR^YeEh8_K#sE?;N<*Whdb~3 z?pd^I$(|oyk1yPEo<0OFROHBB70%&b^jMk>`21lOitdv^Z&t{wf0m*IxCcB55R-Cy!gMx;}OLf10$b7NVXuKE1zJTZ~8Cce`;v zD%B}on-}Pz4@2>Ov&c*4ne@zH-yE1pi9MHmzQKUuH?7*`arwDx<;|~`^^2#2ec!e1 zNAQ3y@2UhFp=p?b0A&N}{>8F&3fIqER_v>)L(O&BU+_9rT{m3-O-gt%e!ata(#?B$ zBDXB$P(ELZ!-V~fIG<356nkbYQC4hJU)%0yUZzPtt+2YD1RwgvE*~Prf>`hUx-XCk zJsQ!gyN?Hs6CNu^`#%7J_cI+K?Z4ZgHD{%^-^*qvKke7>`)E3~t{Zxy)h<(;oEK;Jr|COaCXS5uw-p(eo+Vfk zx3=2l>*_oM$4Xh|gKmC{9PqC@KcN=Dse-$VzxlgF5p=DD1{kMt^R6jB@7|+j)pRQc zD*z#KNXCdV1B3#c3+T|+xqxco^P70Jccgv4`{Y=)!UToPy%TD?B3FnbhRYIY=Qz5E zOxQc9TOT-`exL6iMEYtJkE{#^ZmYsU;ZKrhLA-mb|TG(IBdL}lVj=bs< zR^y9MBcW6k(q7)wCW5Q#_+*qzWyVrxBKc6Uz}>yHo6(g2aZ*YJ8*wM;L9Hw^QCPG@ zp1w6}@IA^KAPWD7k{Sj{1Uh14U{_F;-Dd3lpEb-^a)=~oUPc=IsZ{GtJKOT6q*P)-KNxW$MzSF4k47qB# z@$5OcjlH{TbmzRm8z`&Tgdb$5`d|KblJM?Iu5y*p#;m4iBcT($-`1rpZTNJFiaELC zhp@_O1=&As^4e1+j9Y<2I}{Iaa*b3%Hqm<{zBil9XuO6dhVDQY^Q(w|4 zxOFXwLs+$H;a6`5%T3j!w}c9JNtttBC%DlL;AoRK%1+VHX~4xor((DB>wjM1+S_4t zY79Vx{EK6M6<%cU9%tC;#;YX>ECILx_F46DHO#=xdg=HR||s zc~K7&)pd&oaQ+rTzB`jL?(7%VZ_J!_8o;&{!Vec8$ zm`y+wm&+Cd6Rw!Q~5*61SPOKn;)7fU$th zCe-Op<6Q&4j+v*!yKEwtNz;g+Q@G6r|J$tY+|uhBGb@3)%@#F{md@{4a?#U(VE<&3 z--e3Af}_TbpKHTUA1-?S*&2t7^>#PuZFVLm)MH@CgH2PHW9aAvNXr}ZU~fo*SEH<; z+BBLa-z#WkV2PE$;I@}cFbsLq#GQ1zS}WwX0-uoqaDZd42vnZHa3WA2{Oc+{Yca_0 zx`(ecqlx)vlb`BXU+)iFMFNBJs;!9K-fXuu3-9jxS(m5_NxV>TcNY;cA+;Ld%(GWn zo&;8D$tI(bLLJ1IKoUQ6N24fG@{|VgpZ)cghmPvYd(YsZuNh8RvL-q$^=O*BQ zlj_;t22atwbf*}**jQ$c+RZ!#?O$kT+1)M^TI`9Y9i+nSZGH0YB~Wp{ zm=Y%WCmp_`!G48wI&<#$8&!S+8PC1mZP#gOiRILpaGK@(F--*#sT9ZeHtzW zHyMhy(&Mjpz!T!Ek6qIvg~+rr^5*W^25EdPV#S>*%XPb!LgT@00g3~injLL0`iS9e zX~|kW<6K0sl7jNh#vkcTG5@uG*~wPciiJesO|VfM5)d8qn{$D3TccI`FGa|mrbk0|mF*zm8L`y7%$(l}eY)p#5v z4=@#N%L$bm2(m4q?E5#-ym8zoE#D31lH)9B%3igkp%>D6c9sfg>w5}r4Wu6IRtOd` zs0UsSsnTa-gmkY=qI1BN0P9b|zcJk-ofkwhM>}5pm1Z|VM8c%xwWj;^r_}FtLw1$1 z8X{pHbB2sTaT76kKeEoSa=p#C`{|byWSxrgl%(@foC@sc8gn}thlYv%x3YIauKBA6 zdGlj7p_fW8yqJFawQy#oY!l4~MbbKk#9z}{rQJ=sAg2Jw&Y!=LWHjb2Qk z5xLCL7IT|w;D@HOUy-&~uhHNv-zjl0E^5H@^M9PLw1(=N&7n0Ay%nnDG%``zKPzAQ zxdXHwAc1`-&;VDfnJ-_B?^hO4RH?II8)Qah+EJ^%MjTdn_b^laPX201GQslPWjQ|Q z`G&DCS`jS{kXfd7ISsONIoJv5i>HzLyOR_-Ni`?;2%p}9?jo@`-_4!NBcZek5qUI9_?{aHw7*ChJfpYePeb--b(gV ziPL_52dud)%#G*(1Ipq5Wu8rGDOA^R=}LAU7PJ0H(*>7Dsy?~#h2i3faKs8*dUlJh z8_956ddP(^hhww=c<%H%7B2KL@u1hpeq97Ed_QA$_drci;Fh$wURYhvDzZ@yk>dop zs`)>e5Fa3H=L1tHHS6}{M{$XhM|XhxPVD_R=YiXI3lyHo<$C>)>rXdpN+`$?tOxu? zv8(MB(Muw?e3)sR*YhGkV4_o%>y?=3oZ$p6mX-3}_{is&n=grgp_4(2bBlUvDMS2n& z_g#Kid>!i`|0lYcf=T5nWny)Z$Uf+~|CU>G8;o`c)BP@VsQPEthV1iC6ER--tw%n+ zF$3pge!cm`+yBQ_ujeygKpaB}RyooE`9)gdJ*W!X2hAiQ$x7WHayh0&n0I`U_aSqF zpORpb@3k!{r5Ozc+&&s^t8Ns^>Z7=*;d?7 zy@iyIW|+~)<7Z~LW}$n2SaaQS)0^weTK0P!?DsalFLTKVzhTn4Mn?zf?lo!C2)Z43 zM`Z_K6v6%{M~vhh(m(MfzfqjAtsbUU`25)%AnYsku)i><%qS0Bi$Ccp3(vRp% zrFA`YaQHkIsq5frx!Xb0%^Konv%MFFt;gWWE9m_jmSPk2d^t+HcYS4lT{NxJde~>8 z_v}YcA_0GqLka&?9hXN5`K!g}dHC!}Jv#Bn6~W6DUzn;y*mY9Rai?#Gjb4;E`xYe_dV>?$`tTnUCZ z)|K<*`>9@}9iNKGRI)o!_dRP*jq1dDX&$v-!zSI58{i-Xs3#;TjVqG6oCciUtG#ls z^6_b&^&14QphGvb{`~gr*xXx#=Nyfg3Se%NHzwpfnPE~l*DUj9e z9kzTcX6)rg_$^=ZUBAwql5Xj_Pc1V9bjBi0OMH{0T=@kQN;Ttu16~d2A+4)Jfa8v9XBR%{u&Jb79jJf7`h6Z=2-?Z5fiPu0INUNPY{#f3zzJ<|co3CBoY!!<{+I4a9E z;cPkRGHLxXnMmla>A503W0(~ewU*AhOsWgeLeRL=6s6>Hl`@)pe6zs7(2vvXzHpm7 zesDQ*@8FQV7fCp{*z;{i*Z!L-89j+Uk&NW@_i`h>n2DOzV^Q)Ym%f=C3LfgB&4`mYFw@g~@ z*icUmlR63DPbDeDySY)tU8u*8S+qFBIOcgx&^YfsE(VwkxeR^$kqfFY#S!iuv0;1` zn`l@&sa)3~YZ`WqXwH~oQF{%5Bl3bk%wOw7?k)aRME6sh=J^#K1ebY9AuXR#82;zy z4A!G5C0-4lF@r7bnMnJ#Y|sBPF7=&T3P8K^e>oh(_q>uxeZ3RNCSA&KZ^1&cEAb2t zA*$0?i|EajYK&Y?mQmN`JTqCes99(a%cIIF1B_D$zayoqxcEsYSTacj1DWoJeDNs) z#g-oJzx!fI(~;U;W}y;~;4VpeKuW94Oh@wisNlGd$3yh|GHu9iC22z?D(aW)yV!}) z-9oA{on1lFp$F72t_2H=h!8yQz{0TT$dPx8HRGCKc%TX>l#=Vu)BuD^G$ z(l3+ejXp0pXkUnRq8spin-c!H-|ufHI9oiVTsfBiY~co&Z_o~FjR&?TG1iFuoh(_obFnDQLjtSwomRTU=uMa<3u)c-+M7fDxL{Vp}8#tr^_>oadoIPY$o3@+Jpf!h-!R}q0PK~vszDo5yO!zihcqp)N_TgW^CPLiSq)hw+XwP}a z{>R7hc`%N9{g;#LNQlwCu%&pQVW!~WnkX*JV=2e4wReYi{pZz7*`E1IHAI8R{$QV? zVD|0ItM%PK&j^#PTdaxJt~EtxMPC6J^5Y#1wsJLG9&TW+Ai=c}`vDz^PW{>)gBd2* z03}iQ11XPezI5JUUa3;f>5zx|5ufg+$av^Aep;S`LKu*q3X*7^+#3qiW=#ow7^ZrA z+nM_O-Vfd1_hd%+)Q=7SfzE-re2zxRb5Uq4G)c_!rz=ow``PYw8)LsaRHV)>mrEhK0eLr!XY?Nb?mx!hhMNRY+*v|CcGQA8_6(puvyN1!_ge8#P$(bJD9}$8P z*UGi$lNOI(1j&41+U1jrc-S@bx;J>@lOZ6)?qrd*{>oQPXcd9lRK-}P;v=g+!hJFG zgXxdKnm?y*Kk0<4bqAEQmD4_0hg(aGbi3aJ{I(2dD`ZXh{|Gy2%h|ZjdY=Q}Rl9Mi z%z|Tcuvs%Ft;qr)Gny3+`BlmowJJX49qrtB!pHIYLY1vPKzQ~}`nk10*_-%hYrY-Q z4Giuy_d6Zq&-QMztPfu>lXLY{s(zWuN$T^qSM$1~fAHC%HI5F8TvypWP2z%wK#Ae0+w$q1F zw-os|>w+ZNYFc&XYA(--YcpC2*Uum6re`;qJv$a+rYk%SQtgC4{l0vBJa`;noYRJZ z2z(BJsUB2HrsQ6N$h54zjTW#P<)UN0l-+E^u)5n;YtI0@=M)O~^k+if$EBfhQ3v@w zo_hI*z}TCJPj94EzP(>SzC5`hH2L+z7wF>N5QDcLS9|MjCI2NnHULnd06IOSuE8Ud zs(W({E*rEdsq5c*=y@wfp%jQ>I-*1Vp?@%zSRo~o%B zGxRMuuC5LW#g<=5vR98aN8TkI3L)beWXQMP#H8@@M2OZ+-q5_l=!doA_DZkdPL~e$ z^xzOQ&rYe$-8U*X}|npX!OgxQ1Qd}1_Vw=S)mTpd}N7occ@i)pNR@!ZS#@Z_(`&*iwxIPH(2M+GWQm;7HUnNn>odjH_g zMa6D?#m%=+Jh&0S0E*QW@<*v0g1>|wI$y;hLtyHsborh<_p-_G62tDmkZloh==4>r zZATdWpp5dY{pvtAX19aUe>?Ne%h;C{Ta6u!2dk+-mgpz~s1XHS2onE0$V{Q8yqupr zwsY;Z*tL1V$-u?wDW!BU72M76#I2X9pyf|enke%LISCHx|pF}{5VwouQ6>>$)%s?=BvSes%x34Hs@Sdnyt z0Y;WEPxCw9orY)a6s9+R@%qYp{#vWGS>LTj>Z{UqF5_h4aoZOu1>W?trO_~n zWC#Lh4itRM$BPn|Nnv&Gg~OLbp#i2(Hij}d?|Epv~GYSS>& z$FaqhuleW~g$oH}Be=zJL#vn_JtMjhVbI)!PU;I<@i)f~$7?lP z6~0@|{1t*$A9Ls@nKM8ze+GQz`|gToAxG_#+xQ_rr``?OwjkC6ja8X@y&nD_L+dQu zCk!5OU$<|9d<@6`khMkA=D$Led449m`Az}&f!1gOqbJw-;0j$jDfPiCt7cL=FfUd;|1T_h&?Sm>dxT=3m{#;zTkMfPpFLPI-O#A@9^*mcTYsw`)O~;ZSocp^In_weZ$7zRG#L*{jewSJQ&2!!ew(( z_MKvBkbmCh(q#{`jsx6eNX{C&B|d%N^3?@f8z1#pYvkhr-z8)0 zPcSg;JJ#PL95R=voM#KxBzz43Y1_Ja^J4nkOxeIl{Ti%2vW3X-qwbJT{`U#=vl z=XoTCH*6HLBn3hpEG>cbXS-&j;CL0Cx_I0RT=XYgM-2NucH3Kjqpq&=ZmmB{0#3Tp zxfyRrH>@ado?(hEgb(H5^8-(>;oB!x?|ROOADkA>_%P?QGzC5F^$<{9`*o$jKluh& zU3K$-lDw)Q5SS=>(ASbq`j@;QtogQea0XXf7GQ*kd;nCWSKxw)-u8Bq!vuK1isjluKu$08URKTMqGhBiiIf$>Wf7wj4%mz8kkA9 zJPvZ&7F`KUMLs6rXZ)W&djSzUaF9Z(Dxrcod2Q%J$}$%Z5y0!)jfBvhWM+eF??|$h zE{CaR@x51be07gvgz6^POjSb0`#a3gc^2b*b8{S zL^D04zy)Gf^mzoVKQ#RIF9{W9Wn)kWP@I7}m*{Pd%IC_w3FecGk%W~x(c4#4jat5> zwJTil3wTg-?R5~;m;qs+@d~M(`k|dWy@rW)+~EN;DnsljP58>WJdA!5OZdNZKiz)& z2&QVOT@gsV9YMt%AjyWdaJ;fcsDi_&reD`#kBl#!UrZt>osYp?JrAQK8Vg%ilO8F& z!2ze*Igsx5?gl!BxV}a97R#Kvv!_2Au(vT~aV-`>XLA-$aSN;V&uI85!%LM(5twyu-CsEZy6HSuS_V@3$yzHEh%gxh9r;w?h6_B9eV_fNFJJ=`FP+dr|Rgu(}TGns;xi z9EpT==tEM4h=)&p@;s$ZzQqab6R^fEU00WDK{VRn775$*tx zl$<2cM`fRaG<%#hsnOrurh48K7Two>HPi^)z8iripCZ?NcwSTe*1d9xX^rz@+q@qc zD$1_p!Z`@w1hiv?Yd)FD+bwQjzj|bn+4?@a{HpQSIQshf@KxzMEsv#zazs%d=L8^# zLoeT76W-m?@D^ihY}|1-=P_E;qO|QMJm;+B?8ou%1S2>u>+D;F=&~bxN*wj}ES-)( z0Md=Rx_CihDH0p%rzxxjK>B4}WRk@jTKa`WXN0PZB=IuopuB%77XzS3XI(Uf2vYWv ztlFsfZ+U1@=sbCg4}EXs=7SqzT(32c?`Z?G*}dC}W5&g^UTrYh9q?3QODbvi&t!xbr6CRz^ixVzLI{B>Xbnh;mj`3O9KXK`P>NmbU7P;?a;r z)0g+}$Rb+K(@K*Cie*C^%(M{-{D`T9Y%##X)`L$LB#o6V-j_NlP3c=Y(2bHvE3vYC%k7*@K?@+6TZOZ{EfSRj^NS_|}wG%`*(lXAc`NmXq_0PFRL$UT$0%S&@1ZbsU5D!s_ z+bE*!Z1e0WiOOCQigNYeNiChNwa7VYx?tw#LP=WM2o%{}GN)#pbm2NtA(? zlM&6oRunKZ#zd`e`B9MKYX(JIc&qK`-Wo37>jkGF5(RKuHD3W-Pm`G2%F0l!<}@2Z z4A2i;5}-hVWD0UW{IA|-?4=kv;t6PEWX0Z|N{9lq2MwUChBgc#soO1D5BZxhQq}?k za<>+ha6T#-2(Ik-`zn;$g3D{=lij1p6MZuo`RnO;3Mqv3{l-aFs*M|C;TOq6ji{E> zp@b$b?|B1`&MZ>ViF=g$v>%5O$oexZYzAKH*cG+oX!lp2m`KNUygnNco$r+gh&62I~7uK(FM3C+qZa)O*(ODZnqJF5SM* zaGU94BcKqh_$RM5b>9yMSCJ~GIQmjsu{C1crV=hj#OrDRpC$?)BY=NjGd%>KS6H&C zN$%*q2SA_p&9#kkn(xe@TQof|2eHAxt~VcFiUT z4A6=bbbU9np^2r0A3#mA_{hxT?1gUSonlGs%LJhH6){Rh-?uO=hjL7m9Nz8iNAUh= z_h0$bf*peZWIRmSo&v#)2Op0`{QtH6{5rG3uawiwjnZAT8?swPLB-P-G&

A)YY! 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 literal 0 HcmV?d00001 diff --git a/docs/src/04_solution_strategy.adoc b/docs/src/04_solution_strategy.adoc index cd8d7f4e..32fe86f8 100644 --- a/docs/src/04_solution_strategy.adoc +++ b/docs/src/04_solution_strategy.adoc @@ -3,26 +3,27 @@ ifndef::imagesdir[:imagesdir: ../images] [[section-solution-strategy]] == Solution Strategy -Elaboramos una aplicacíon en la que los usuarios pueden registrarse para jugar, donde en cada juego tendran que responder varias preguntas, de distintas categorias, donde se guardará -un ranking con la máxima puntuación del usuario y se podrá comparar con otros usuarios, también tendra una sección que indique su promedio de aciertos y en que categoría acierta más preguntas. +We developed an application in which users can register to play, where in each game they will have to answer several questions, from different categories, where it will be saved +A ranking with the maximum score of the user and can be compared with other users, it will also have a section that indicates their correct guess and in which category they get the most questions right. -.Tecnologías usadas para llevar a cabo: +.Technologies used to carry out: -* MongoDB: MongoDB es una base de datos NoSQL de código abierto que utiliza un modelo de datos basado en documentos para el almacenamiento y recuperación de información. -* React JS: Es un framework creado por Facebook ampliamente utlizado para crear componentes de la interfaz de usuario. Escogido por el gran volumen de documentación y ser el framework utilizado durante los anteriores cursos. -* WikiData: Es una base de conocimientos gratuita modificada por seres humanos como por máquinas, y es de donde obtendremos nuestras preguntas. -* Microsoft Azure: plataforma de computación en la nube que proporciona servicios de infraestructura, plataforma y software como servicio para alojar, administrar y escalar aplicaciones y servicios en línea. +* MongoDB: MongoDB is an open-source NoSQL database that uses a document-based data model for information storage and retrieval. +* React JS: It's a framework created by Facebook that's widely used to create user interface components. Chosen for the large volume of documentation and the fact that it is the framework used during the previous courses. +* WikiData: It's a free knowledge base modified by humans as well as machines, and it's where we'll get our questions from. +* Microsoft Azure: A cloud computing platform that provides infrastructure, platform, and software-as-a-service services to host, manage, and scale online applications and services. -.Diseño -La página web diseñada está compuesta por un frontend en React, un backend en Node.js y está documentada usando Asciidoc. Cada usuario tendrá su propia cuenta donde se guardará su información. Las decisiones relacionadas con el diseño se detallan en el punto 9. +=== Design +The designed website is composed of a frontend in React, a backend in Node.js and is documented using Asciidoc. Each user will have their own account where their information will be saved. Design-related decisions are detailed in point 9. -.Seguridad -Garantizamos la seguridad del usuario +=== Security +We guarantee the safety of the user -.Testabilidad -Se realizarán pruebas para cada parte individual de la aplicación, garantizando así el correcto funcionamiento de los diferentes modulos tanto individualmente como de forma conjunta. +=== Testability +Tests will be carried out for each individual part of the application, thus ensuring the correct operation of the different modules both individually and together. + +=== Interface +The graphical interface will be chosen among all the members of the team, each one contributing a sketch or idea, which will be shared and it will be decided which best fits the expected performance and which elements of these sketches are most suitable. +This will take into account the usability and needs of different types of users. -.Interfaz -La interfaz gráfica será elegida entre todos los miembros del equipo, aportando cada uno algún boceto o idea, los cuales serán puestos en común y se decidirá cual se ajusta mejor a la apicación esperada y que elementos de dichos bocetos resultan más adecuados. -Para ello se tendrá en cuenta la usabilidad y las necesidades de los difentes tipos de usuarios. diff --git a/docs/src/05_building_block_view.adoc b/docs/src/05_building_block_view.adoc index df5c29c8..010f4318 100644 --- a/docs/src/05_building_block_view.adoc +++ b/docs/src/05_building_block_view.adoc @@ -5,208 +5,42 @@ ifndef::imagesdir[:imagesdir: ../images] == Building Block View -[role="arc42help"] -**** -.Content -The building block view shows the static decomposition of the system into building blocks (modules, components, subsystems, classes, interfaces, packages, libraries, frameworks, layers, partitions, tiers, functions, macros, operations, data structures, ...) as well as their dependencies (relationships, associations, ...) - -This view is mandatory for every architecture documentation. -In analogy to a house this is the _floor plan_. - -.Motivation -Maintain an overview of your source code by making its structure understandable through -abstraction. - -This allows you to communicate with your stakeholder on an abstract level without disclosing implementation details. - -.Form -The building block view is a hierarchical collection of black boxes and white boxes -(see figure below) and their descriptions. - -image::05_building_blocks-EN.png["Hierarchy of building blocks"] - -*Level 1* is the white box description of the overall system together with black -box descriptions of all contained building blocks. - -*Level 2* zooms into some building blocks of level 1. -Thus it contains the white box description of selected building blocks of level 1, together with black box descriptions of their internal building blocks. - -*Level 3* zooms into selected building blocks of level 2, and so on. - - -.Further Information - -See https://docs.arc42.org/section-5/[Building Block View] in the arc42 documentation. - -**** - === Whitebox Overall System -[role="arc42help"] -**** -Here you describe the decomposition of the overall system using the following white box template. It contains - - * an overview diagram - * a motivation for the decomposition - * black box descriptions of the contained building blocks. For these we offer you alternatives: - - ** use _one_ table for a short and pragmatic overview of all contained building blocks and their interfaces - ** use a list of black box descriptions of the building blocks according to the black box template (see below). - Depending on your choice of tool this list could be sub-chapters (in text files), sub-pages (in a Wiki) or nested elements (in a modeling tool). - - - * (optional:) important interfaces, that are not explained in the black box templates of a building block, but are very important for understanding the white box. -Since there are so many ways to specify interfaces why do not provide a specific template for them. - In the worst case you have to specify and describe syntax, semantics, protocols, error handling, - restrictions, versions, qualities, necessary compatibilities and many things more. -In the best case you will get away with examples or simple signatures. - -**** - -_****_ +The code is broken down in a structured way by levels, in which the internal dependencies of each element are taught. The system is divided into Whitebox and Blackbox. -Motivation:: +image::whiteBox5.1.png["Hierarchy of building blocks"] -__ - - -Contained Building Blocks:: -__ - -Important Interfaces:: -__ - -[role="arc42help"] -**** -Insert your explanations of black boxes from level 1: - -If you use tabular form you will only describe your black boxes with name and -responsibility according to the following schema: - -[cols="1,2" options="header"] |=== -| **Name** | **Responsibility** -| __ | __ -| __ | __ +| *_Actors_* | *_Description_* +| *_Admin_* | You have access to the entire app and can manage it to make it work properly. +| *_User_* | It's the one that interacts directly with the app. |=== - -If you use a list of black box descriptions then you fill in a separate black box template for every important building block . -Its headline is the name of the black box. -**** - - -==== - -[role="arc42help"] -**** -Here you describe -according the the following black box template: - -* Purpose/Responsibility -* Interface(s), when they are not extracted as separate paragraphs. This interfaces may include qualities and performance characteristics. -* (Optional) Quality-/Performance characteristics of the black box, e.g.availability, run time behavior, .... -* (Optional) directory/file location -* (Optional) Fulfilled requirements (if you need traceability to requirements). -* (Optional) Open issues/problems/risks - -**** - -__ - -__ - -_<(Optional) Quality/Performance Characteristics>_ - -_<(Optional) Directory/File Location>_ - -_<(Optional) Fulfilled Requirements>_ - -_<(optional) Open Issues/Problems/Risks>_ - - - - -==== - -__ - -==== - -__ - - -==== - -... - -==== +=== Blackbox Overall System +|=== +| *_Name_* | *_Description_* +| *_Interface_* | The interface with which the user interacts +| *_WikiData_* | Provide the questions that will be used in the app +| *_MongoDB_* | Store user data +|=== === Level 2 -[role="arc42help"] -**** -Here you can specify the inner structure of (some) building blocks from level 1 as white boxes. - -You have to decide which building blocks of your system are important enough to justify such a detailed description. -Please prefer relevance over completeness. Specify important, surprising, risky, complex or volatile building blocks. -Leave out normal, simple, boring or standardized parts of your system -**** - -==== White Box __ - -[role="arc42help"] -**** -...describes the internal structure of _building block 1_. -**** - -__ - -==== White Box __ - - -__ - -... - -==== White Box __ - - -__ - - - -=== Level 3 - -[role="arc42help"] -**** -Here you can specify the inner structure of (some) building blocks from level 2 as white boxes. - -When you need more detailed levels of your architecture please copy this -part of arc42 for additional levels. -**** - - -==== White Box <_building block x.1_> - -[role="arc42help"] -**** -Specifies the internal structure of _building block x.1_. -**** - - -__ - - -==== White Box <_building block x.2_> - -__ - +image::Level2.png["Hierarchy of building blocks"] +.Motivation -==== White Box <_building block y.1_> +In this diagram we can see the decided microservices that will provide all the operations necessary for the +application to work properly. -__ +|=== +| *_Name_* | *_Description_* +| *_Game Service_* | It is the microservice that will be in charge of the correct functioning of the game and calculate the user's score. +| *_UserData Service_* | It is the microservice that provides the necessary user data. +| *_Authetification Service_* | It's a microservice that users use to sign in to your app. +| *_Question Service_* | It is the microservice that will generate the questions through the WikiData API. +|=== \ No newline at end of file diff --git a/docs/src/06_runtime_view.adoc b/docs/src/06_runtime_view.adoc index e10f375b..7886952d 100644 --- a/docs/src/06_runtime_view.adoc +++ b/docs/src/06_runtime_view.adoc @@ -4,62 +4,14 @@ ifndef::imagesdir[:imagesdir: ../images] == Runtime View -[role="arc42help"] -**** -.Contents -The runtime view describes concrete behavior and interactions of the system’s building blocks in form of scenarios from the following areas: +=== -* important use cases or features: how do building blocks execute them? -* interactions at critical external interfaces: how do building blocks cooperate with users and neighboring systems? -* operation and administration: launch, start-up, stop -* error and exception scenarios +The user starts a game, and the game uses the questions service to run it. -Remark: The main criterion for the choice of possible scenarios (sequences, workflows) is their *architectural relevance*. It is *not* important to describe a large number of scenarios. You should rather document a representative selection. +image::juega.png["Hierarchy of building blocks"] -.Motivation -You should understand how (instances of) building blocks of your system perform their job and communicate at runtime. -You will mainly capture scenarios in your documentation to communicate your architecture to stakeholders that are less willing or able to read and understand the static models (building block view, deployment view). +=== -.Form -There are many notations for describing scenarios, e.g. +The user checks their scores and statistics. -* numbered list of steps (in natural language) -* activity diagrams or flow charts -* sequence diagrams -* BPMN or EPCs (event process chains) -* state machines -* ... - - -.Further Information - -See https://docs.arc42.org/section-6/[Runtime View] in the arc42 documentation. - -**** - -=== - - -* __ -* __ - -It is possible to use a sequence diagram: - -[plantuml,"Sequence diagram",png] ----- -actor Alice -actor Bob -database Pod as "Bob's Pod" -Alice -> Bob: Authentication Request -Bob --> Alice: Authentication Response -Alice --> Pod: Store route -Alice -> Bob: Another authentication Request -Alice <-- Bob: another authentication Response ----- - -=== - -=== ... - -=== +image::historial.png["Hierarchy of building blocks"] \ No newline at end of file From 08568652b12a7a59fbc914b6a3a9049d4875646e Mon Sep 17 00:00:00 2001 From: Alfredo Jirout Cid <144898617+UO288443@users.noreply.github.com> Date: Tue, 20 Feb 2024 09:55:36 +0100 Subject: [PATCH 08/22] Update 09_architecture_decisions.adoc --- docs/src/09_architecture_decisions.adoc | 3 +++ 1 file changed, 3 insertions(+) diff --git a/docs/src/09_architecture_decisions.adoc b/docs/src/09_architecture_decisions.adoc index 806c71f7..1097cfe8 100644 --- a/docs/src/09_architecture_decisions.adoc +++ b/docs/src/09_architecture_decisions.adoc @@ -24,6 +24,9 @@ MySQL: The base project that they have given us uses MongoDB for the back-end of the application, a DBMS with which we are not familiar, however MySQL is another database management system that we have used in other subjects. We decided to discard this option to learn how to use MongoDB +Link to all the Architecture Decisions + https://github.com/Arquisoft/wiq_es1a/wiki/Decisiones-arquitect%C3%B3nicas + [role="arc42help"] **** .Contents From 08954cbf18973a8e4aa53622f99cae888b3d3fa1 Mon Sep 17 00:00:00 2001 From: Alfredo Jirout Cid <144898617+UO288443@users.noreply.github.com> Date: Tue, 20 Feb 2024 09:57:44 +0100 Subject: [PATCH 09/22] Update 09_architecture_decisions.adoc --- docs/src/09_architecture_decisions.adoc | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/docs/src/09_architecture_decisions.adoc b/docs/src/09_architecture_decisions.adoc index 1097cfe8..6f2b259e 100644 --- a/docs/src/09_architecture_decisions.adoc +++ b/docs/src/09_architecture_decisions.adoc @@ -4,25 +4,31 @@ ifndef::imagesdir[:imagesdir: ../images] == Architecture Decisions JavaScript: We will use the JavaScript language to create both the front-end and the backend of the application, is the default technology of the initial project. +https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%231)-JavaScript ReactJS: The base project they have given us uses ReactJS for the front-end of the application, although it is a framework with which we are not familiar. We think that is a good oportunity to start using this framework. +https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%232)-ReactJS NodeJS: We use NodeJS for the back-end of the application, this is the default technology of the initial project and all the group thought it was a good idea to use it. +https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%233)-NodeJS MongoDB The base project they have given us uses MongoDB for the back-end of the application, a DBMS with which we are not familiar, but it seemed like a good idea to learn this GBD system. +https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%234)-MongoDB Docker: We will use Docker to package the application modules in containers, it is the initial technology of the project + https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%235)-Docker MySQL: The base project that they have given us uses MongoDB for the back-end of the application, a DBMS with which we are not familiar, however MySQL is another -database management system that we have used in other subjects. We decided to discard this option to learn how to use MongoDB +database management system that we have used in other subjects. We decided to discard this option to learn how to use + https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%236)-MySQL Link to all the Architecture Decisions https://github.com/Arquisoft/wiq_es1a/wiki/Decisiones-arquitect%C3%B3nicas From 9ee3ad0152face65e5c9d3f401296362fb945923 Mon Sep 17 00:00:00 2001 From: Alfredo Jirout Cid <144898617+UO288443@users.noreply.github.com> Date: Tue, 20 Feb 2024 10:05:54 +0100 Subject: [PATCH 10/22] Update 09_architecture_decisions.adoc --- docs/src/09_architecture_decisions.adoc | 30 ++++++++++++++----------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/docs/src/09_architecture_decisions.adoc b/docs/src/09_architecture_decisions.adoc index 6f2b259e..76e49a58 100644 --- a/docs/src/09_architecture_decisions.adoc +++ b/docs/src/09_architecture_decisions.adoc @@ -3,35 +3,39 @@ ifndef::imagesdir[:imagesdir: ../images] [[section-design-decisions]] == Architecture Decisions JavaScript: - We will use the JavaScript language to create both the front-end and the backend of the application, is the default technology of the initial project. + We will use the JavaScript language to create both the front-end and the backend of the application, is the default technology of the initial project. + https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%231)-JavaScript ReactJS: The base project they have given us uses ReactJS for the front-end of the application, although it is a framework with which we are not familiar. - We think that is a good oportunity to start using this framework. +We think that is a good oportunity to start using this framework. + https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%232)-ReactJS NodeJS: - We use NodeJS for the back-end of the application, this is the default technology of the initial project and all the group thought it was a good idea - to use it. + We use NodeJS for the back-end of the application, this is the default technology of the initial project and all the group thought it was a good idea to use it. + https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%233)-NodeJS MongoDB - The base project they have given us uses MongoDB for the back-end of the application, a DBMS with which we are not familiar, but it seemed like a - good idea to learn this GBD system. + The base project they have given us uses MongoDB for the back-end of the application, a DBMS with which we are not familiar, but it seemed like a good idea to learn this GBD system. + https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%234)-MongoDB -Docker: - We will use Docker to package the application modules in containers, it is the initial technology of the project - https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%235)-Docker +Docker +We will use Docker to package the application modules in containers, it is the initial technology of the project. + +https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%235)-Docker MySQL: - The base project that they have given us uses MongoDB for the back-end of the application, a DBMS with which we are not familiar, however MySQL is another -database management system that we have used in other subjects. We decided to discard this option to learn how to use - https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%236)-MySQL + The base project that they have given us uses MongoDB for the back-end of the application, a DBMS with which we are not familiar, however MySQL is another database management system that we have used in other subjects. We decided to discard this option to learn how to use + +https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%236)-MySQL Link to all the Architecture Decisions - https://github.com/Arquisoft/wiq_es1a/wiki/Decisiones-arquitect%C3%B3nicas + +https://github.com/Arquisoft/wiq_es1a/wiki/Decisiones-arquitect%C3%B3nicas [role="arc42help"] **** From 9d561534c40ba044fffdde11f3ae98caa9ffa392 Mon Sep 17 00:00:00 2001 From: Alfredo Jirout Cid <144898617+UO288443@users.noreply.github.com> Date: Tue, 20 Feb 2024 10:24:54 +0100 Subject: [PATCH 11/22] Update 08_concepts.adoc --- docs/src/08_concepts.adoc | 18 ++++++++++++++---- 1 file changed, 14 insertions(+), 4 deletions(-) diff --git a/docs/src/08_concepts.adoc b/docs/src/08_concepts.adoc index 304f524a..1c5a8f1e 100644 --- a/docs/src/08_concepts.adoc +++ b/docs/src/08_concepts.adoc @@ -60,18 +60,22 @@ See https://docs.arc42.org/section-8/[Concepts] in the arc42 documentation. A user interface is the space where a human and a computer or device communicate and exchange information -=== +The user interface is the part of the application that directly interacts with the client, in our case, the player. It should function correctly and be user-friendly. +=== Ergonomics Ergonomics is the science of designing and arranging workplaces, products, and systems to fit and adapt to the people who use them. Ergonomics aims to improve comfort, efficiency, and safety by considering human physical and psychological needs and limitations. === Internationalization -Internationalization is the practice of designing and developing applications that can support multiple languages, formats, and conventions +Internationalization is the practice of designing and developing applications that can support multiple languages, formats, and conventions. + +Internationalization consists of adapting to the language and culture depending on the location, this is very important as it helps users from different regions to be able to use our game === Security Security is a broad term that can refer to different aspects of protection, resilience, or prevention of harm. +A minimum of security in the application is important to save our customers' data === Safety Is the state of being protected from danger or harm. @@ -96,7 +100,9 @@ Configurability is the ability to modify or customize something, especially in c === Administration -The process or activity of managing, directing, or organizing something or someone +The process or activity of managing, directing, or organizing something or someone. + +Administering an application consists of managing all the resources, users to be able to maintain it in a correct way === Management @@ -106,8 +112,12 @@ Management is the process of organizing and directing the resources of a busines Is the process of restoring the functionality and data of software applications after a disaster, such as a natural calamity, a cyberattack, or a human error. +It is important to have a plan to recover the data in case of a system failure, it is usually a backup. + === Architecture and design patterns -Architecture and design patterns are concepts that help software developers and architects design and build software systems that are efficient, scalable, and maintainable +Architecture and design patterns are concepts that help software developers and architects design and build software systems that are efficient, scalable, and maintainable. + +Design patterns are important so that your application can scale without cascading changes. From c8f50844161b5d12b1e3b394bf9610c3fa604467 Mon Sep 17 00:00:00 2001 From: iyanfdezz Date: Tue, 20 Feb 2024 10:25:28 +0100 Subject: [PATCH 12/22] Merge remote-tracking branch 'origin/doc' --- docs/src/12_glossary.adoc | 23 +++++++++++++---------- 1 file changed, 13 insertions(+), 10 deletions(-) diff --git a/docs/src/12_glossary.adoc b/docs/src/12_glossary.adoc index 810bb367..b4774116 100644 --- a/docs/src/12_glossary.adoc +++ b/docs/src/12_glossary.adoc @@ -7,20 +7,20 @@ ifndef::imagesdir[:imagesdir: ../images] |=== |Term |Definition -|Quality Tree -| Structured representation of quality attributes and their relationships. +|WIQ +| Application or game based on the TV show "Saber y Ganar". -|Quality Scenarios -| Specific instances or situations that show the behavior of a system under various quality attributes. +|Login +| Process of authenticating a user's identity to access the application. -|Change Scenarios -| Scenarios depicting how a system responds or adapts to changes, like fixes or addings. +|Wikidata +| Online collaborative database storing structured data and linking information across different projects and languages. -|Usage Scenarios -| Instances demonstrating how users interact with a system in various contexts. +|User +| Person who interacts with a system, service, or application to perform tasks. -|User Interface -| The visual and interactive part of a computer program or system through which users interact. +|Admin +| Person with special rights or authority to manageaspects of an application. |Query | Request for information from a database. @@ -31,6 +31,9 @@ ifndef::imagesdir[:imagesdir: ../images] |Documentation | Written information regarding a system's design, functionality, or usage. +|Distractors +| Incorrect or irrelevant options or elements included in a question. + |NodeJS | Runtime environment that allows the execution of JavaScript code outside of a web browser. From 1c0053db9cfc81453f1f192afb59625b3d86f180 Mon Sep 17 00:00:00 2001 From: UO288443 Date: Tue, 20 Feb 2024 10:29:46 +0100 Subject: [PATCH 13/22] Update 08 08_concepts --- docs/src/08_concepts.adoc | 66 ++++++++++++++++++++++----------------- 1 file changed, 37 insertions(+), 29 deletions(-) diff --git a/docs/src/08_concepts.adoc b/docs/src/08_concepts.adoc index a3e657b5..53562a23 100644 --- a/docs/src/08_concepts.adoc +++ b/docs/src/08_concepts.adoc @@ -56,62 +56,70 @@ See https://docs.arc42.org/section-8/[Concepts] in the arc42 documentation. **** -=== __ +=== User Interface -__ +A user interface is the space where a human and a computer or device communicate and exchange information -=== __ +The user interface is the part of the application that directly interacts with the client, in our case, the player. It should function correctly and be user-friendly. +=== Ergonomics -__ +Ergonomics is the science of designing and arranging workplaces, products, and systems to fit and adapt to the people who use them. Ergonomics aims to improve comfort, efficiency, and safety by considering human physical and psychological needs and limitations. -=== __ +=== Internationalization -__ +Internationalization is the practice of designing and developing applications that can support multiple languages, formats, and conventions. -=== __ +Internationalization consists of adapting to the language and culture depending on the location, this is very important as it helps users from different regions to be able to use our game -__ +=== Security -=== __ +Security is a broad term that can refer to different aspects of protection, resilience, or prevention of harm. -__ +A minimum of security in the application is important to save our customers' data +=== Safety -=== __ +Is the state of being protected from danger or harm. -_<- Build: This stage involves compiling, validating, and packaging the source code into executable or deployable artifacts. +=== Build, Test, Deploy + +- Build: This stage involves compiling, validating, and packaging the source code into executable or deployable artifacts. - Test: This stage involves running various tests, such as unit tests, integration tests, and regression tests, to ensure the quality and functionality of the software. -- Deploy: This stage involves delivering or releasing the software to the target environment, such as a server, a cloud platform, or a user device. >_ +- Deploy: This stage involves delivering or releasing the software to the target environment, such as a server, a cloud platform, or a user device. + +=== Code Generation + +Code generation is the process of creating executable or deployable code from various sources of information, such as natural language, images, or other code. -=== __ +Generating code makes it easier for the programmer to create functions without wasting a lot of time and simply focusing on the correct implementation of the code, an example is for example generating the getters and setters -__ +=== Migration -=== __ +Migrating from one software application or platform to another, such as switching from a legacy system to a modern one, or from a local server to a cloud service. -__ +=== Configurability -=== __ +Configurability is the ability to modify or customize something, especially in computing, electronics, or devices -__ +=== Administration -=== __ +The process or activity of managing, directing, or organizing something or someone. -__ +Administering an application consists of managing all the resources, users to be able to maintain it in a correct way -=== __ +=== Management -__ +Management is the process of organizing and directing the resources of a business or organization to achieve its goals. -=== __ +=== Disaster-Recovery -__ +Is the process of restoring the functionality and data of software applications after a disaster, such as a natural calamity, a cyberattack, or a human error. -=== __ +It is important to have a plan to recover the data in case of a system failure, it is usually a backup. -__ +=== Architecture and design patterns +Architecture and design patterns are concepts that help software developers and architects design and build software systems that are efficient, scalable, and maintainable. +Design patterns are important so that your application can scale without cascading changes. -=== __ -__ From 33212ce9516eb9b0eb003a377a6265edc931ef0a Mon Sep 17 00:00:00 2001 From: UO288443 Date: Tue, 20 Feb 2024 10:41:47 +0100 Subject: [PATCH 14/22] edit 09 09_architecture_decisions --- docs/src/09_architecture_decisions.adoc | 37 +++++++++++-------------- 1 file changed, 16 insertions(+), 21 deletions(-) diff --git a/docs/src/09_architecture_decisions.adoc b/docs/src/09_architecture_decisions.adoc index 51e9aad9..d881b40f 100644 --- a/docs/src/09_architecture_decisions.adoc +++ b/docs/src/09_architecture_decisions.adoc @@ -2,34 +2,29 @@ ifndef::imagesdir[:imagesdir: ../images] [[section-design-decisions]] == Architecture Decisions +JavaScript: +[ADR#1](https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%231)-JavaScript) -[role="arc42help"] -**** -.Contents -Important, expensive, large scale or risky architecture decisions including rationales. -With "decisions" we mean selecting one alternative based on given criteria. +ReactJS: -Please use your judgement to decide whether an architectural decision should be documented -here in this central section or whether you better document it locally -(e.g. within the white box template of one building block). +[ADR#2](https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%232)-ReactJS) -Avoid redundancy. -Refer to section 4, where you already captured the most important decisions of your architecture. +NodeJS: -.Motivation -Stakeholders of your system should be able to comprehend and retrace your decisions. +[ADR#3](https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%233)-NodeJS) -.Form -Various options: +MongoDB: -* ADR (https://cognitect.com/blog/2011/11/15/documenting-architecture-decisions[Documenting Architecture Decisions]) for every important decision -* List or table, ordered by importance and consequences or: -* more detailed in form of separate sections per decision +[ADR#4](https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%234)-MongoDB) + +Docker: + +[ADR#5](https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%235)-Docker) + +MySQL: + +[ADR#6](https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%236)-MySQL) -.Further Information -See https://docs.arc42.org/section-9/[Architecture Decisions] in the arc42 documentation. -There you will find links and examples about ADR. -**** From 235eefe843433ab529eb47337ca56f6239d9e2f0 Mon Sep 17 00:00:00 2001 From: UO288443 Date: Tue, 20 Feb 2024 10:45:11 +0100 Subject: [PATCH 15/22] fixes informat --- debug.log | 1 + docs/src/09_architecture_decisions.adoc | 2 +- 2 files changed, 2 insertions(+), 1 deletion(-) create mode 100644 debug.log diff --git a/debug.log b/debug.log new file mode 100644 index 00000000..77d60f2b --- /dev/null +++ b/debug.log @@ -0,0 +1 @@ +[0220/104149.273:ERROR:registration_protocol_win.cc(107)] CreateFile: El sistema no puede encontrar el archivo especificado. (0x2) diff --git a/docs/src/09_architecture_decisions.adoc b/docs/src/09_architecture_decisions.adoc index d881b40f..73f26c13 100644 --- a/docs/src/09_architecture_decisions.adoc +++ b/docs/src/09_architecture_decisions.adoc @@ -4,7 +4,7 @@ ifndef::imagesdir[:imagesdir: ../images] == Architecture Decisions JavaScript: -[ADR#1](https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%231)-JavaScript) +xref:ADR#1[https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%231)-JavaScript] ReactJS: From 0b243f8ea8c01060307096af132e60a97b3881a0 Mon Sep 17 00:00:00 2001 From: UO288443 Date: Tue, 20 Feb 2024 10:45:48 +0100 Subject: [PATCH 16/22] fixed 2 --- docs/src/09_architecture_decisions.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/09_architecture_decisions.adoc b/docs/src/09_architecture_decisions.adoc index 73f26c13..75bf7255 100644 --- a/docs/src/09_architecture_decisions.adoc +++ b/docs/src/09_architecture_decisions.adoc @@ -4,7 +4,7 @@ ifndef::imagesdir[:imagesdir: ../images] == Architecture Decisions JavaScript: -xref:ADR#1[https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%231)-JavaScript] +ADR#1 xref:ADR#1[https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%231)-JavaScript] ReactJS: From 6773ca6225da10bd3d474080f5415a8a93858374 Mon Sep 17 00:00:00 2001 From: UO288443 Date: Tue, 20 Feb 2024 10:49:27 +0100 Subject: [PATCH 17/22] prueba 22232 --- docs/src/09_architecture_decisions.adoc | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/src/09_architecture_decisions.adoc b/docs/src/09_architecture_decisions.adoc index 75bf7255..2331c0e0 100644 --- a/docs/src/09_architecture_decisions.adoc +++ b/docs/src/09_architecture_decisions.adoc @@ -8,7 +8,7 @@ ADR#1 xref:ADR#1[https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%231)-JavaScrip ReactJS: -[ADR#2](https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%232)-ReactJS) +(https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%232)-ReactJS)[ADR#2] NodeJS: From 602eb353906f59ea1a2b27f87670ecd24220abaf Mon Sep 17 00:00:00 2001 From: UO288443 Date: Tue, 20 Feb 2024 10:51:34 +0100 Subject: [PATCH 18/22] =?UTF-8?q?Fin=20a=C3=B1adir=20link?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/src/09_architecture_decisions.adoc | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/docs/src/09_architecture_decisions.adoc b/docs/src/09_architecture_decisions.adoc index 2331c0e0..2e136c67 100644 --- a/docs/src/09_architecture_decisions.adoc +++ b/docs/src/09_architecture_decisions.adoc @@ -4,7 +4,7 @@ ifndef::imagesdir[:imagesdir: ../images] == Architecture Decisions JavaScript: -ADR#1 xref:ADR#1[https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%231)-JavaScript] +(https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%231)-JavaScript)[ADR#1] ReactJS: @@ -12,19 +12,19 @@ ReactJS: NodeJS: -[ADR#3](https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%233)-NodeJS) +(https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%233)-NodeJS)[ADR#3] MongoDB: -[ADR#4](https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%234)-MongoDB) +(https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%234)-MongoDB)[ADR#4] Docker: -[ADR#5](https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%235)-Docker) +(https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%235)-Docker)[ADR#5] MySQL: -[ADR#6](https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%236)-MySQL) +(https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%236)-MySQL)[ADR#6] From 24be845e7e8fa711b945e916ca28c50b762a3766 Mon Sep 17 00:00:00 2001 From: UO288443 Date: Tue, 20 Feb 2024 10:52:44 +0100 Subject: [PATCH 19/22] fin, ahora si (creo) --- docs/src/09_architecture_decisions.adoc | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/docs/src/09_architecture_decisions.adoc b/docs/src/09_architecture_decisions.adoc index 2e136c67..c569aca3 100644 --- a/docs/src/09_architecture_decisions.adoc +++ b/docs/src/09_architecture_decisions.adoc @@ -4,27 +4,27 @@ ifndef::imagesdir[:imagesdir: ../images] == Architecture Decisions JavaScript: -(https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%231)-JavaScript)[ADR#1] +https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%231)-JavaScript[ADR#1] ReactJS: -(https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%232)-ReactJS)[ADR#2] +https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%232)-ReactJS[ADR#2] NodeJS: -(https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%233)-NodeJS)[ADR#3] +https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%233)-NodeJS[ADR#3] MongoDB: -(https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%234)-MongoDB)[ADR#4] +https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%234)-MongoDB[ADR#4] Docker: -(https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%235)-Docker)[ADR#5] +https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%235)-Docker[ADR#5] MySQL: -(https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%236)-MySQL)[ADR#6] +https://github.com/Arquisoft/wiq_es1a/wiki/(ADR-%236)-MySQL[ADR#6] From ef543a63a966d76a3d40960fa74f594ecb5d3c1f Mon Sep 17 00:00:00 2001 From: CANCI0 Date: Tue, 20 Feb 2024 16:51:24 +0100 Subject: [PATCH 20/22] =?UTF-8?q?Arreglados=20errores=20de=20la=20document?= =?UTF-8?q?aci=C3=B3n?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/images/businesscontext.png | Bin 11834 -> 0 bytes docs/images/businesscontext.svg | 29 +++++++++++++ docs/images/technicalcontext.png | Bin 10132 -> 0 bytes docs/images/technicalcontext.svg | 50 ++++++++++++++++++++++ docs/index.adoc | 2 +- docs/src/01_introduction_and_goals.adoc | 4 +- docs/src/02_architecture_constraints.adoc | 18 +++----- docs/src/03_system_scope_and_context.adoc | 20 ++++++++- 8 files changed, 107 insertions(+), 16 deletions(-) delete mode 100644 docs/images/businesscontext.png create mode 100644 docs/images/businesscontext.svg delete mode 100644 docs/images/technicalcontext.png create mode 100644 docs/images/technicalcontext.svg diff --git a/docs/images/businesscontext.png b/docs/images/businesscontext.png deleted file mode 100644 index 1609bb983bdd124f3d1b452a595f51ebf41e6565..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 11834 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 diff --git a/docs/images/businesscontext.svg b/docs/images/businesscontext.svg new file mode 100644 index 00000000..18ddb206 --- /dev/null +++ b/docs/images/businesscontext.svg @@ -0,0 +1,29 @@ +User«system»WIQ!«extern»Wikidataplaysasks questionsrequest data to generate questionsreturns data \ No newline at end of file diff --git a/docs/images/technicalcontext.png b/docs/images/technicalcontext.png deleted file mode 100644 index 3f41aa631488a9ff9f0bb75331452a03e1d5557e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10132 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 diff --git a/docs/images/technicalcontext.svg b/docs/images/technicalcontext.svg new file mode 100644 index 00000000..21e5dec1 --- /dev/null +++ b/docs/images/technicalcontext.svg @@ -0,0 +1,50 @@ +DeviceAzureBrowserWIQ!MongoDBUserAdminWikidatainteractsusesSSHHTTP/HTTPSaccessesREST \ No newline at end of file diff --git a/docs/index.adoc b/docs/index.adoc index 468be5fd..38006e65 100644 --- a/docs/index.adoc +++ b/docs/index.adoc @@ -6,7 +6,7 @@ // configure EN settings for asciidoc include::src/config.adoc[] -= image:arc42-logo.png[arc42] Template += image:arc42-logo.png[arc42] WIQ! Documentation :revnumber: 8.2 EN :revdate: January 2023 :revremark: (based upon AsciiDoc version) diff --git a/docs/src/01_introduction_and_goals.adoc b/docs/src/01_introduction_and_goals.adoc index 5c1f62d8..b4e0acc0 100644 --- a/docs/src/01_introduction_and_goals.adoc +++ b/docs/src/01_introduction_and_goals.adoc @@ -50,8 +50,8 @@ WIQ! is a software by means of which users can emulate being the participants of | The application must have a well-defined and structured design, so that it is easy to make modifications and/or extensions. | *3* -| *_Privacy_* -| The application must guarantee the privacy of its users' information, with mechanisms in place to prevent intrusions into the system. +| *_Availability_* +| The application must ensure high availability, with mechanisms in place to prevent system failures and ensure continuous access to its services. |=== === Stakeholders diff --git a/docs/src/02_architecture_constraints.adoc b/docs/src/02_architecture_constraints.adoc index de6edc58..96e90792 100644 --- a/docs/src/02_architecture_constraints.adoc +++ b/docs/src/02_architecture_constraints.adoc @@ -6,20 +6,16 @@ ifndef::imagesdir[:imagesdir: ../images] |=== | *_Architecture constraint_* | *_Description_* -| *_Tecnología de Desarrollo_* | The application must be developed using web technologies compatible with RTVE's requirements and standards. +| *_Development Technology_* | The application must be developed using web technologies compatible with RTVE's requirements and standards. -| *_Plataforma de Implementación_* | The application must be implemented on a web hosting platform that meets RTVE's performance, security and scalability requirements. +| *_Implementation Platform_* | The application must be implemented on a web hosting platform that meets RTVE's performance, security and scalability requirements. -| *_Cumplimiento de Normativas de Privacidad_* | The architecture must ensure compliance with data privacy regulations, such as GDPR, to protect users' information. +| *_Privacy Compliance_* | The architecture must ensure compliance with data privacy regulations, such as GDPR, to protect users' information. -| *_Compatibilidad con Navegadores_* | The application should be compatible with a wide range of popular web browsers to ensure a consistent user experience. +| *_Code Maintainability_* | Software development practices that promote clean and well-documented code should be followed to facilitate future upgrades and maintenance. -| *_Seguridad de la Información_* | Strong security measures, such as user authentication, access control and data encryption, must be implemented to protect users' confidential information. - -| *_Escalabilidad_* | The architecture must be scalable to handle increased user traffic without compromising performance. - -| *_Mantenibilidad del Código_* | Software development practices that promote clean and well-documented code should be followed to facilitate future upgrades and maintenance. - -| *_Tiempo de Desarrollo_* | The application must be developed within a specific time frame, which may influence architectural decisions and technology selection. +| *_Development Time_* | The application must be developed within a specific time frame, which may influence architectural decisions and technology selection. +| *_Wikidata Integration_* +| The system architecture must incorporate the use of Wikidata as data source to generate questions, ensuring seamless integration and consistency with external knowledge bases. |=== diff --git a/docs/src/03_system_scope_and_context.adoc b/docs/src/03_system_scope_and_context.adoc index af83295e..c8b3ebff 100644 --- a/docs/src/03_system_scope_and_context.adoc +++ b/docs/src/03_system_scope_and_context.adoc @@ -4,7 +4,23 @@ ifndef::imagesdir[:imagesdir: ../images] == System Scope and Context === Business Context -image::businesscontext.png[Business context] +image::businesscontext.svg[Business context] + +|=== +| *Entity* | *_Description_* +| *_User_* | It's the one that interacts directly with the app. +| *_WIQ!_* | The web application. +| *_Wikidata_* | Source from which data is drawn to formulate questions +|=== === Technical Context -image::technicalcontext.png[Technical Context] +image::technicalcontext.svg[Technical Context] +|=== +| *Entity* | *_Description_* +| *_User_* | Represents the user interacting with the system. In this case, the user is interacting with the "WIQ!" application through the device and the web browser. +| *_Device_* | The device used by the user to access the application. This node contains the web browser component that allows the user to interact with the application. +| *_Cloud_* | Represents the cloud infrastructure, in this case, Azure. This node contains the "WIQ!" component that hosts the application and allows its access through HTTP/HTTPS protocols. +| *_WIQ!_* | The main application that the user interacts with. It is hosted on the Azure cloud and accesses a MongoDB database to store and retrieve data, as well as interacts with Wikidata through REST. +| *_Wikidata_* | Source from which data is drawn to formulate questions. The application will request data via "Wikidata Query Service", which allows to retrieve data using SparQL. +| *_MongoDB_* | The database management system used by the "WIQ!" application to store and retrieve data. In this case, it is used to store data related to the application. +|=== \ No newline at end of file From 83556462ebcd9431b540afb867b8332de63f6b48 Mon Sep 17 00:00:00 2001 From: uo288231 Date: Tue, 20 Feb 2024 19:00:09 +0100 Subject: [PATCH 21/22] Point 11 (risks and technical debts) fixed --- docs/src/11_technical_risks.adoc | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/docs/src/11_technical_risks.adoc b/docs/src/11_technical_risks.adoc index 319aea3e..b8527bc2 100644 --- a/docs/src/11_technical_risks.adoc +++ b/docs/src/11_technical_risks.adoc @@ -6,9 +6,10 @@ ifndef::imagesdir[:imagesdir: ../images] [options="header"] |=== | Priority | Description of Risk/Technical Debt | Suggested Measures -| High | Vulnerabilities in user authentication | Implement additional security measures, such as password encryption | High | Potential application malfunctions | Implement unit tests for key components and critical functions, along with extensive testing with real users | Medium | Slow performance of database queries | Optimize database queries, avoid unnecessary queries +| Medium | Potential unavailability of Wikidata | Design the UI to handle missing or incomplete data from Wikidata. | Low | Unoptimized styles | Optimize CSS styles to improve application performance and loading times | Low | Insufficient documentation | Provide comprehensive documentation of architecture, code structure, development processes, and deployment to facilitate team maintenance and collaboration +| Low | Vulnerabilities in user authentication | Implement additional security measures, such as password encryption |=== From fbc66dc6d45a46fd469d4a532f16980bb89d4b89 Mon Sep 17 00:00:00 2001 From: uo288231 Date: Tue, 20 Feb 2024 19:37:06 +0100 Subject: [PATCH 22/22] Point 10 (quality requirements) fixed --- docs/src/10_quality_requirements.adoc | 12 +++--------- 1 file changed, 3 insertions(+), 9 deletions(-) diff --git a/docs/src/10_quality_requirements.adoc b/docs/src/10_quality_requirements.adoc index e978d021..526f5faa 100644 --- a/docs/src/10_quality_requirements.adoc +++ b/docs/src/10_quality_requirements.adoc @@ -8,8 +8,6 @@ These are: * Performance: ability of the software system to respond well to user interactions and perform tasks efficiently. -* Security: protection of the system from unauthorized access, data breaches, and malicious activities, ensuring safety of sensitive information. - * Usability: intuitiveness of the software interface, making it easy for users to interact with the system. * Maintainability: how easily the software system can be modified, updated, and extended without significant effort or risk. @@ -19,13 +17,11 @@ These are: * Quality - Performance - - Security - Usability - Maintainability * Relationships - Quality -> Performance - - Quality -> Security - Quality -> Usability - Quality -> Maintainability @@ -37,9 +33,8 @@ These are: |=== |Aspect|Source|Stimulus|Artefact|Environment|Response|Response Measurement | Performance |User |While playing, a user selects a response to a question.|User Interface|Normal gameplay conditions.|The system updates its interface very fast and the user knows if they responded correctly, so they can keep playing.|Interface update time is less than 0.5 seconds. -|Security|User|A new user registers in the game by providing their username and password.|Encrypting system|User registration process.|The server encrypts the user's password before storing it in the MongoDB database, so it is safe from data leaks.|Passwords are encrypted using a strong hashing algorithm. -|Usability|User|A new user starts playing the game.|User Interface|Initial game setup.|The user interface displays available options and provides clear instructions on how to play, including a 'Help' button.|User can navigate through the interface without guidance. -|Performance|User|A user finishes playing a game and wants to start a new one.|System and User Interface|Post-game completion.|The system ends the current game, displays the user's score, resets all game elements, and offers the option to start a new game.|Score is saved accurately, and game restarts without errors. +| Usability |User|A new user starts playing the game.|User Interface|Initial game setup.|The user interface displays available options and provides clear instructions on how to play, including a 'Help' button.|User can navigate through the interface without guidance. +| Performance |User|A user finishes playing a game and wants to start a new one.|System and User Interface|Post-game completion.|The system ends the current game, displays the user's score, resets all game elements, and offers the option to start a new game.|Score is saved accurately, and game restarts without errors. |=== @@ -48,7 +43,6 @@ These are: [options="header"] |=== | Aspect | Source | Stimulus | Artefact | Environment | Response | Response Measurement -| Security / Maintainability | Developers | We want to add the option of logging in with an e-mail instead of an username | Login system is well structured so it is easy to modify it or add new ways of logging in | Normal conditions | The development team implements the new login method easily, ensuring that neither the current data or the new credentials will be compromised | Successful integration of the new login method without compromising data -| Security | Developers | The decision is made to transition from MongoDB to another database system | User data migration to a new database system is secured | Database migration phase | The system initiates a secure data migration process, ensuring all user data, including usernames and passwords, is transferred to the new database system intact and encrypted | Successful transfer of user data without compromise +| Maintainability | Developers | We want to add the option of logging in with an e-mail instead of an username | Login system is well structured so it is easy to modify it or add new ways of logging in | Normal conditions | The development team implements the new login method easily, ensuring that neither the current data or the new credentials will be compromised | Successful integration of the new login method without compromising data | Maintainability | Developers | Developers want to add a new game mode | The game's code is well-structured and documented | Development phase | Due to code being well-structured and documented, it is easy to add new functionality to our system without risking our already implemented functionality | Successful addition of new game mode | Maintainability | Developers | An error is identified in the game that needs to be corrected. | The game's code is well-structured and documented | Error identification and resolution phase | Due to code being well-structured and documented, developers can easily locate the error and correct it | Successful identification and correction of the error \ No newline at end of file

A)YY! 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 literal 0 HcmV?d00001 diff --git a/docs/src/04_solution_strategy.adoc b/docs/src/04_solution_strategy.adoc index 7bf03f7a..72e7fa19 100644 --- a/docs/src/04_solution_strategy.adoc +++ b/docs/src/04_solution_strategy.adoc @@ -3,30 +3,27 @@ ifndef::imagesdir[:imagesdir: ../images] [[section-solution-strategy]] == Solution Strategy +Elaboramos una aplicacíon en la que los usuarios pueden registrarse para jugar, donde en cada juego tendran que responder varias preguntas, de distintas categorias, donde se guardará +un ranking con la máxima puntuación del usuario y se podrá comparar con otros usuarios, también tendra una sección que indique su promedio de aciertos y en que categoría acierta más preguntas. -[role="arc42help"] -**** -.Contents -A short summary and explanation of the fundamental decisions and solution strategies, that shape system architecture. It includes +.Tecnologías usadas para llevar a cabo: -* technology decisions -* decisions about the top-level decomposition of the system, e.g. usage of an architectural pattern or design pattern -* decisions on how to achieve key quality goals -* relevant organizational decisions, e.g. selecting a development process or delegating certain tasks to third parties. +* MongoDB: MongoDB es una base de datos NoSQL de código abierto que utiliza un modelo de datos basado en documentos para el almacenamiento y recuperación de información. +* React JS: Es un framework creado por Facebook ampliamente utlizado para crear componentes de la interfaz de usuario. Escogido por el gran volumen de documentación y ser el framework utilizado durante los anteriores cursos. +* WikiData: Es una base de conocimientos gratuita modificada por seres humanos como por máquinas, y es de donde obtendremos nuestras preguntas. +* Microsoft Azure: plataforma de computación en la nube que proporciona servicios de infraestructura, plataforma y software como servicio para alojar, administrar y escalar aplicaciones y servicios en línea. -.Motivation -These decisions form the cornerstones for your architecture. They are the foundation for many other detailed decisions or implementation rules. +=== Diseño +La página web diseñada está compuesta por un frontend en React, un backend en Node.js y está documentada usando Asciidoc. Cada usuario tendrá su propia cuenta donde se guardará su información. Las decisiones relacionadas con el diseño se detallan en el punto 9. -.Form -Keep the explanations of such key decisions short. +=== Seguridad +Garantizamos la seguridad del usuario -Motivate what was decided and why it was decided that way, -based upon problem statement, quality goals and key constraints. -Refer to details in the following sections. +=== Testabilidad +Se realizarán pruebas para cada parte individual de la aplicación, garantizando así el correcto funcionamiento de los diferentes modulos tanto individualmente como de forma conjunta. +=== Interfaz +La interfaz gráfica será elegida entre todos los miembros del equipo, aportando cada uno algún boceto o idea, los cuales serán puestos en común y se decidirá cual se ajusta mejor a la apicación esperada y que elementos de dichos bocetos resultan más adecuados. +Para ello se tendrá en cuenta la usabilidad y las necesidades de los difentes tipos de usuarios. -.Further Information -See https://docs.arc42.org/section-4/[Solution Strategy] in the arc42 documentation. - -**** diff --git a/docs/src/05_building_block_view.adoc b/docs/src/05_building_block_view.adoc index df5c29c8..e36617c5 100644 --- a/docs/src/05_building_block_view.adoc +++ b/docs/src/05_building_block_view.adoc @@ -5,208 +5,42 @@ ifndef::imagesdir[:imagesdir: ../images] == Building Block View -[role="arc42help"] -**** -.Content -The building block view shows the static decomposition of the system into building blocks (modules, components, subsystems, classes, interfaces, packages, libraries, frameworks, layers, partitions, tiers, functions, macros, operations, data structures, ...) as well as their dependencies (relationships, associations, ...) - -This view is mandatory for every architecture documentation. -In analogy to a house this is the _floor plan_. - -.Motivation -Maintain an overview of your source code by making its structure understandable through -abstraction. - -This allows you to communicate with your stakeholder on an abstract level without disclosing implementation details. - -.Form -The building block view is a hierarchical collection of black boxes and white boxes -(see figure below) and their descriptions. - -image::05_building_blocks-EN.png["Hierarchy of building blocks"] - -*Level 1* is the white box description of the overall system together with black -box descriptions of all contained building blocks. - -*Level 2* zooms into some building blocks of level 1. -Thus it contains the white box description of selected building blocks of level 1, together with black box descriptions of their internal building blocks. - -*Level 3* zooms into selected building blocks of level 2, and so on. - - -.Further Information - -See https://docs.arc42.org/section-5/[Building Block View] in the arc42 documentation. - -**** - === Whitebox Overall System -[role="arc42help"] -**** -Here you describe the decomposition of the overall system using the following white box template. It contains - - * an overview diagram - * a motivation for the decomposition - * black box descriptions of the contained building blocks. For these we offer you alternatives: - - ** use _one_ table for a short and pragmatic overview of all contained building blocks and their interfaces - ** use a list of black box descriptions of the building blocks according to the black box template (see below). - Depending on your choice of tool this list could be sub-chapters (in text files), sub-pages (in a Wiki) or nested elements (in a modeling tool). - - - * (optional:) important interfaces, that are not explained in the black box templates of a building block, but are very important for understanding the white box. -Since there are so many ways to specify interfaces why do not provide a specific template for them. - In the worst case you have to specify and describe syntax, semantics, protocols, error handling, - restrictions, versions, qualities, necessary compatibilities and many things more. -In the best case you will get away with examples or simple signatures. - -**** - -_****_ +El código se descompone de manera estructurada por niveles, en los que se enseñan las dependencias internas de cada elemento. El sistema se divide en Whitebox y Blackbox. -Motivation:: +image::whiteBox5.1.png["Hierarchy of building blocks"] -__ - - -Contained Building Blocks:: -__ - -Important Interfaces:: -__ - -[role="arc42help"] -**** -Insert your explanations of black boxes from level 1: - -If you use tabular form you will only describe your black boxes with name and -responsibility according to the following schema: - -[cols="1,2" options="header"] |=== -| **Name** | **Responsibility** -| __ | __ -| __ | __ +| *_Actores_* | *_Description_* +| *_Admin_* | Tiene acceso al completo de la aplicación y puede administrarla para que funcione correctamente. +| *_User_* | Es el que interactua directamente con la aplicación. |=== - -If you use a list of black box descriptions then you fill in a separate black box template for every important building block . -Its headline is the name of the black box. -**** - - -==== - -[role="arc42help"] -**** -Here you describe -according the the following black box template: - -* Purpose/Responsibility -* Interface(s), when they are not extracted as separate paragraphs. This interfaces may include qualities and performance characteristics. -* (Optional) Quality-/Performance characteristics of the black box, e.g.availability, run time behavior, .... -* (Optional) directory/file location -* (Optional) Fulfilled requirements (if you need traceability to requirements). -* (Optional) Open issues/problems/risks - -**** - -__ - -__ - -_<(Optional) Quality/Performance Characteristics>_ - -_<(Optional) Directory/File Location>_ - -_<(Optional) Fulfilled Requirements>_ - -_<(optional) Open Issues/Problems/Risks>_ - - - - -==== - -__ - -==== - -__ - - -==== - -... - -==== +=== Blackbox Overall System +|=== +| *_Name_* | *_Description_* +| *_Interface_* | La interfaz con la que interactua el usuario +| *_WikiData_* | Proporciona las preguntas que se usaran en la aplicación +| *_MongoDB_* | Almacena los datos del usuario +|=== === Level 2 -[role="arc42help"] -**** -Here you can specify the inner structure of (some) building blocks from level 1 as white boxes. - -You have to decide which building blocks of your system are important enough to justify such a detailed description. -Please prefer relevance over completeness. Specify important, surprising, risky, complex or volatile building blocks. -Leave out normal, simple, boring or standardized parts of your system -**** - -==== White Box __ - -[role="arc42help"] -**** -...describes the internal structure of _building block 1_. -**** - -__ - -==== White Box __ - - -__ +image::Level2.png["Hierarchy of building blocks"] -... +.Motivación -==== White Box __ +En este diagrama podemos observar los microservicios decididos que proporcionarán todas las operaciones necesarias para que la +aplicación funcione correctamente. - -__ - - - -=== Level 3 - -[role="arc42help"] -**** -Here you can specify the inner structure of (some) building blocks from level 2 as white boxes. - -When you need more detailed levels of your architecture please copy this -part of arc42 for additional levels. -**** - - -==== White Box <_building block x.1_> - -[role="arc42help"] -**** -Specifies the internal structure of _building block x.1_. -**** - - -__ - - -==== White Box <_building block x.2_> - -__ - - - -==== White Box <_building block y.1_> - -__ +|=== +| *_Name_* | *_Description_* +| *_Game Service_* | Es el microservicio que se encargara del correcto funcionamiento del juego y calcular la puntuación del usuario. +| *_UserData Service_* | Es el microservicio que proporciona los datos necesarios del usuario. +| *_Authetification Service_* | Es un microservicio que los usuarios usan para iniciar sesión en la aplicación. +| *_Question Service_* | Es eel microservicio que generara las preguntas a traves de la Api de WikiData. +|=== \ No newline at end of file From 7820a0aabcec8c563d25abb284ff5a3dc899e3d5 Mon Sep 17 00:00:00 2001 From: rodrox11 Date: Mon, 12 Feb 2024 22:31:45 +0100 Subject: [PATCH 02/22] modificacion doc6 --- docs/images/historial.png | Bin 0 -> 20952 bytes docs/images/juega.png | Bin 0 -> 27505 bytes docs/src/06_runtime_view.adoc | 60 ++++------------------------------ 3 files changed, 6 insertions(+), 54 deletions(-) create mode 100644 docs/images/historial.png create mode 100644 docs/images/juega.png diff --git a/docs/images/historial.png b/docs/images/historial.png new file mode 100644 index 0000000000000000000000000000000000000000..c8a50728b317abafc5557e63aa5225772ce60004 GIT binary patch literal 20952 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 B=nen? literal 0 HcmV?d00001 diff --git a/docs/images/juega.png b/docs/images/juega.png new file mode 100644 index 0000000000000000000000000000000000000000..3e5a228a888876bc86524fa205982401cbcd9786 GIT binary patch literal 27505 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%0D$%KhWiv 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 literal 0 HcmV?d00001 diff --git a/docs/src/06_runtime_view.adoc b/docs/src/06_runtime_view.adoc index e10f375b..4c57ba93 100644 --- a/docs/src/06_runtime_view.adoc +++ b/docs/src/06_runtime_view.adoc @@ -4,62 +4,14 @@ ifndef::imagesdir[:imagesdir: ../images] == Runtime View -[role="arc42help"] -**** -.Contents -The runtime view describes concrete behavior and interactions of the system’s building blocks in form of scenarios from the following areas: +=== -* important use cases or features: how do building blocks execute them? -* interactions at critical external interfaces: how do building blocks cooperate with users and neighboring systems? -* operation and administration: launch, start-up, stop -* error and exception scenarios +El usuario inicia un juego y este usa el servicio preguntas para poder ejecutarse. -Remark: The main criterion for the choice of possible scenarios (sequences, workflows) is their *architectural relevance*. It is *not* important to describe a large number of scenarios. You should rather document a representative selection. +image::juega.png["Hierarchy of building blocks"] -.Motivation -You should understand how (instances of) building blocks of your system perform their job and communicate at runtime. -You will mainly capture scenarios in your documentation to communicate your architecture to stakeholders that are less willing or able to read and understand the static models (building block view, deployment view). +=== -.Form -There are many notations for describing scenarios, e.g. +El usuario comprubrueba sus puntuaciones y estadisticas. -* numbered list of steps (in natural language) -* activity diagrams or flow charts -* sequence diagrams -* BPMN or EPCs (event process chains) -* state machines -* ... - - -.Further Information - -See https://docs.arc42.org/section-6/[Runtime View] in the arc42 documentation. - -**** - -=== - - -* __ -* __ - -It is possible to use a sequence diagram: - -[plantuml,"Sequence diagram",png] ----- -actor Alice -actor Bob -database Pod as "Bob's Pod" -Alice -> Bob: Authentication Request -Bob --> Alice: Authentication Response -Alice --> Pod: Store route -Alice -> Bob: Another authentication Request -Alice <-- Bob: another authentication Response ----- - -=== - -=== ... - -=== +image::historial.png["Hierarchy of building blocks"] \ No newline at end of file From 200cb3300f4f6786b2253ac39c8df51ec8c7f77b Mon Sep 17 00:00:00 2001 From: uo288231 Date: Tue, 13 Feb 2024 21:26:59 +0100 Subject: [PATCH 03/22] Fixing conflicts --- docs/src/11_technical_risks.adoc | 42 +++++++------------------------- 1 file changed, 9 insertions(+), 33 deletions(-) diff --git a/docs/src/11_technical_risks.adoc b/docs/src/11_technical_risks.adoc index cf70ec66..319aea3e 100644 --- a/docs/src/11_technical_risks.adoc +++ b/docs/src/11_technical_risks.adoc @@ -2,37 +2,13 @@ ifndef::imagesdir[:imagesdir: ../images] [[section-technical-risks]] == Risks and Technical Debts - -JavaScript: A dynamic, weakly typed language that can have bugs and problems. -ReactJS: A framework for creating user interfaces, but with difficulties and challenges. A high learning curve is required - -NodeJS: An environment for running JavaScript on the server, but with limitations and risks. - -MongoDB: A NoSQL database that offers scalability, flexibility, and performance, but with trade-offs and challenges. It does not support transactions, joins, or schemas, which can affect the consistency, integrity, and reliability of the data. It has a different language and data model than SQL databases, which implies a paradigm shift. - -Docker: A platform for building and running applications in isolated containers, but with drawbacks and risks. It can increase the complexity and cost of deploying and handling your applications as you need additional tools and configurations. - -The wikidata api, since it is the first time we use it and we will have to learn how to use it to create questions and also learn how to generate templates for those questions - -Communication and group work can be complicated at times, so you should always try to maintain a good working atmosphere with the whole team - -[role="arc42help"] -**** -.Contents -A list of identified technical risks or technical debts, ordered by priority - -.Motivation -“Risk management is project management for grown-ups” (Tim Lister, Atlantic Systems Guild.) - -This should be your motto for systematic detection and evaluation of risks and technical debts in the architecture, which will be needed by management stakeholders (e.g. project managers, product owners) as part of the overall risk analysis and measurement planning. - -.Form -List of risks and/or technical debts, probably including suggested measures to minimize, mitigate or avoid risks or reduce technical debts. - - -.Further Information - -See https://docs.arc42.org/section-11/[Risks and Technical Debt] in the arc42 documentation. - -**** +[options="header"] +|=== +| Priority | Description of Risk/Technical Debt | Suggested Measures +| High | Vulnerabilities in user authentication | Implement additional security measures, such as password encryption +| High | Potential application malfunctions | Implement unit tests for key components and critical functions, along with extensive testing with real users +| Medium | Slow performance of database queries | Optimize database queries, avoid unnecessary queries +| Low | Unoptimized styles | Optimize CSS styles to improve application performance and loading times +| Low | Insufficient documentation | Provide comprehensive documentation of architecture, code structure, development processes, and deployment to facilitate team maintenance and collaboration +|=== From 6698a687bb9c97b9740c32959db9d552a567957b Mon Sep 17 00:00:00 2001 From: Alfredo Jirout Cid <144898617+UO288443@users.noreply.github.com> Date: Sat, 17 Feb 2024 15:32:02 +0100 Subject: [PATCH 04/22] Update 08_concepts.adoc --- docs/src/08_concepts.adoc | 58 ++++++++++++++++++--------------------- 1 file changed, 27 insertions(+), 31 deletions(-) diff --git a/docs/src/08_concepts.adoc b/docs/src/08_concepts.adoc index a3e657b5..304f524a 100644 --- a/docs/src/08_concepts.adoc +++ b/docs/src/08_concepts.adoc @@ -56,62 +56,58 @@ See https://docs.arc42.org/section-8/[Concepts] in the arc42 documentation. **** -=== __ +=== User Interface -__ +A user interface is the space where a human and a computer or device communicate and exchange information -=== __ +=== -__ +Ergonomics is the science of designing and arranging workplaces, products, and systems to fit and adapt to the people who use them. Ergonomics aims to improve comfort, efficiency, and safety by considering human physical and psychological needs and limitations. -=== __ +=== Internationalization -__ +Internationalization is the practice of designing and developing applications that can support multiple languages, formats, and conventions -=== __ +=== Security -__ +Security is a broad term that can refer to different aspects of protection, resilience, or prevention of harm. -=== __ +=== Safety -__ +Is the state of being protected from danger or harm. -=== __ +=== Build, Test, Deploy -_<- Build: This stage involves compiling, validating, and packaging the source code into executable or deployable artifacts. +- Build: This stage involves compiling, validating, and packaging the source code into executable or deployable artifacts. - Test: This stage involves running various tests, such as unit tests, integration tests, and regression tests, to ensure the quality and functionality of the software. -- Deploy: This stage involves delivering or releasing the software to the target environment, such as a server, a cloud platform, or a user device. >_ +- Deploy: This stage involves delivering or releasing the software to the target environment, such as a server, a cloud platform, or a user device. -=== __ +=== Code Generation -__ +Code generation is the process of creating executable or deployable code from various sources of information, such as natural language, images, or other code. -=== __ +=== Migration -__ +Migrating from one software application or platform to another, such as switching from a legacy system to a modern one, or from a local server to a cloud service. -=== __ +=== Configurability -__ +Configurability is the ability to modify or customize something, especially in computing, electronics, or devices -=== __ +=== Administration -__ +The process or activity of managing, directing, or organizing something or someone -=== __ +=== Management -__ +Management is the process of organizing and directing the resources of a business or organization to achieve its goals. -=== __ +=== Disaster-Recovery -__ +Is the process of restoring the functionality and data of software applications after a disaster, such as a natural calamity, a cyberattack, or a human error. -=== __ +=== Architecture and design patterns -__ +Architecture and design patterns are concepts that help software developers and architects design and build software systems that are efficient, scalable, and maintainable - -=== __ - -__ From 4755de1b79ff79c30123c3643e9027a4cdaf9256 Mon Sep 17 00:00:00 2001 From: Alfredo Jirout Cid <144898617+UO288443@users.noreply.github.com> Date: Mon, 19 Feb 2024 13:46:57 +0100 Subject: [PATCH 05/22] Update 07_deployment_view.adoc --- docs/src/07_deployment_view.adoc | 35 ++++++++++++++++---------------- 1 file changed, 18 insertions(+), 17 deletions(-) diff --git a/docs/src/07_deployment_view.adoc b/docs/src/07_deployment_view.adoc index 32417784..cadae4e9 100644 --- a/docs/src/07_deployment_view.adoc +++ b/docs/src/07_deployment_view.adoc @@ -61,16 +61,7 @@ _****_ Motivation:: -__ - -Quality and/or Performance Features:: - -__ - -Mapping of Building Blocks to Infrastructure:: -__ +As we can see, this would be the initial diagram of how the classes would relate to each other. We have, in the first place, the 'app' class that is related to 'link', which in turn is related to the different parts of the app. === Infrastructure Level 2 @@ -82,16 +73,26 @@ Here you can include the internal structure of (some) infrastructure elements fr Please copy the structure from level 1 for each selected element. **** -==== __ +==== APP + +"App": It is the part with which the user interacts. This part would be responsible for providing the visual interface and using the rest of the created classes. + +==== LINK + +"Link" is the part of the application that connects the rest of the parts. This will facilitate the use of the different parts of the application in the App section. + +==== REGISTER + +"Register" is the part of the application that handles user registration and login. It's very important as it's the first thing a potential user will encounter when they visit our page. -__ +==== USER SERVICE -==== __ +"User service" is the part of the application that generates the various services within the application to the user, such as a ranking, correctly answered questions, and so on. -__ +==== QUESTION GENERATOR -... +"Question generator" is the part of the application that, using the data from Wikidata and some pre-created templates, generates the questions and possible answers of the application. -==== __ +==== WIKIDATA -__ +Wikidata” is the API that you will use to obtain the data for the questions. Wikidata is a free and collaborative database that can be read and edited by both humans and machines. It provides a common source of certain types of data that can be used by Wikimedia projects. From c78baa64b2ba7db6c9357f7f6701a90a4e4aeada Mon Sep 17 00:00:00 2001 From: rodrox11 Date: Mon, 19 Feb 2024 22:44:41 +0100 Subject: [PATCH 06/22] Traduccion de documentacion --- docs/src/04_solution_strategy.adoc | 32 ++++++++++++++-------------- docs/src/05_building_block_view.adoc | 28 ++++++++++++------------ docs/src/06_runtime_view.adoc | 8 +++---- 3 files changed, 34 insertions(+), 34 deletions(-) diff --git a/docs/src/04_solution_strategy.adoc b/docs/src/04_solution_strategy.adoc index 72e7fa19..32fe86f8 100644 --- a/docs/src/04_solution_strategy.adoc +++ b/docs/src/04_solution_strategy.adoc @@ -3,27 +3,27 @@ ifndef::imagesdir[:imagesdir: ../images] [[section-solution-strategy]] == Solution Strategy -Elaboramos una aplicacíon en la que los usuarios pueden registrarse para jugar, donde en cada juego tendran que responder varias preguntas, de distintas categorias, donde se guardará -un ranking con la máxima puntuación del usuario y se podrá comparar con otros usuarios, también tendra una sección que indique su promedio de aciertos y en que categoría acierta más preguntas. +We developed an application in which users can register to play, where in each game they will have to answer several questions, from different categories, where it will be saved +A ranking with the maximum score of the user and can be compared with other users, it will also have a section that indicates their correct guess and in which category they get the most questions right. -.Tecnologías usadas para llevar a cabo: +.Technologies used to carry out: -* MongoDB: MongoDB es una base de datos NoSQL de código abierto que utiliza un modelo de datos basado en documentos para el almacenamiento y recuperación de información. -* React JS: Es un framework creado por Facebook ampliamente utlizado para crear componentes de la interfaz de usuario. Escogido por el gran volumen de documentación y ser el framework utilizado durante los anteriores cursos. -* WikiData: Es una base de conocimientos gratuita modificada por seres humanos como por máquinas, y es de donde obtendremos nuestras preguntas. -* Microsoft Azure: plataforma de computación en la nube que proporciona servicios de infraestructura, plataforma y software como servicio para alojar, administrar y escalar aplicaciones y servicios en línea. +* MongoDB: MongoDB is an open-source NoSQL database that uses a document-based data model for information storage and retrieval. +* React JS: It's a framework created by Facebook that's widely used to create user interface components. Chosen for the large volume of documentation and the fact that it is the framework used during the previous courses. +* WikiData: It's a free knowledge base modified by humans as well as machines, and it's where we'll get our questions from. +* Microsoft Azure: A cloud computing platform that provides infrastructure, platform, and software-as-a-service services to host, manage, and scale online applications and services. -=== Diseño -La página web diseñada está compuesta por un frontend en React, un backend en Node.js y está documentada usando Asciidoc. Cada usuario tendrá su propia cuenta donde se guardará su información. Las decisiones relacionadas con el diseño se detallan en el punto 9. +=== Design +The designed website is composed of a frontend in React, a backend in Node.js and is documented using Asciidoc. Each user will have their own account where their information will be saved. Design-related decisions are detailed in point 9. -=== Seguridad -Garantizamos la seguridad del usuario +=== Security +We guarantee the safety of the user -=== Testabilidad -Se realizarán pruebas para cada parte individual de la aplicación, garantizando así el correcto funcionamiento de los diferentes modulos tanto individualmente como de forma conjunta. +=== Testability +Tests will be carried out for each individual part of the application, thus ensuring the correct operation of the different modules both individually and together. -=== Interfaz -La interfaz gráfica será elegida entre todos los miembros del equipo, aportando cada uno algún boceto o idea, los cuales serán puestos en común y se decidirá cual se ajusta mejor a la apicación esperada y que elementos de dichos bocetos resultan más adecuados. -Para ello se tendrá en cuenta la usabilidad y las necesidades de los difentes tipos de usuarios. +=== Interface +The graphical interface will be chosen among all the members of the team, each one contributing a sketch or idea, which will be shared and it will be decided which best fits the expected performance and which elements of these sketches are most suitable. +This will take into account the usability and needs of different types of users. diff --git a/docs/src/05_building_block_view.adoc b/docs/src/05_building_block_view.adoc index e36617c5..010f4318 100644 --- a/docs/src/05_building_block_view.adoc +++ b/docs/src/05_building_block_view.adoc @@ -7,14 +7,14 @@ ifndef::imagesdir[:imagesdir: ../images] === Whitebox Overall System -El código se descompone de manera estructurada por niveles, en los que se enseñan las dependencias internas de cada elemento. El sistema se divide en Whitebox y Blackbox. +The code is broken down in a structured way by levels, in which the internal dependencies of each element are taught. The system is divided into Whitebox and Blackbox. image::whiteBox5.1.png["Hierarchy of building blocks"] |=== -| *_Actores_* | *_Description_* -| *_Admin_* | Tiene acceso al completo de la aplicación y puede administrarla para que funcione correctamente. -| *_User_* | Es el que interactua directamente con la aplicación. +| *_Actors_* | *_Description_* +| *_Admin_* | You have access to the entire app and can manage it to make it work properly. +| *_User_* | It's the one that interacts directly with the app. |=== @@ -23,24 +23,24 @@ image::whiteBox5.1.png["Hierarchy of building blocks"] |=== | *_Name_* | *_Description_* -| *_Interface_* | La interfaz con la que interactua el usuario -| *_WikiData_* | Proporciona las preguntas que se usaran en la aplicación -| *_MongoDB_* | Almacena los datos del usuario +| *_Interface_* | The interface with which the user interacts +| *_WikiData_* | Provide the questions that will be used in the app +| *_MongoDB_* | Store user data |=== === Level 2 image::Level2.png["Hierarchy of building blocks"] -.Motivación +.Motivation -En este diagrama podemos observar los microservicios decididos que proporcionarán todas las operaciones necesarias para que la -aplicación funcione correctamente. +In this diagram we can see the decided microservices that will provide all the operations necessary for the +application to work properly. |=== | *_Name_* | *_Description_* -| *_Game Service_* | Es el microservicio que se encargara del correcto funcionamiento del juego y calcular la puntuación del usuario. -| *_UserData Service_* | Es el microservicio que proporciona los datos necesarios del usuario. -| *_Authetification Service_* | Es un microservicio que los usuarios usan para iniciar sesión en la aplicación. -| *_Question Service_* | Es eel microservicio que generara las preguntas a traves de la Api de WikiData. +| *_Game Service_* | It is the microservice that will be in charge of the correct functioning of the game and calculate the user's score. +| *_UserData Service_* | It is the microservice that provides the necessary user data. +| *_Authetification Service_* | It's a microservice that users use to sign in to your app. +| *_Question Service_* | It is the microservice that will generate the questions through the WikiData API. |=== \ No newline at end of file diff --git a/docs/src/06_runtime_view.adoc b/docs/src/06_runtime_view.adoc index 4c57ba93..7886952d 100644 --- a/docs/src/06_runtime_view.adoc +++ b/docs/src/06_runtime_view.adoc @@ -4,14 +4,14 @@ ifndef::imagesdir[:imagesdir: ../images] == Runtime View -=== +=== -El usuario inicia un juego y este usa el servicio preguntas para poder ejecutarse. +The user starts a game, and the game uses the questions service to run it. image::juega.png["Hierarchy of building blocks"] -=== +=== -El usuario comprubrueba sus puntuaciones y estadisticas. +The user checks their scores and statistics. image::historial.png["Hierarchy of building blocks"] \ No newline at end of file From 43ca76921a45ba05ec033e574564060980c59c17 Mon Sep 17 00:00:00 2001 From: rodrox11 Date: Mon, 19 Feb 2024 22:58:21 +0100 Subject: [PATCH 07/22] introducir documentacion a rama principal --- docs/images/Level2.png | Bin 0 -> 17215 bytes docs/images/historial.png | Bin 0 -> 20952 bytes docs/images/juega.png | Bin 0 -> 27505 bytes docs/images/whiteBox5.1.png | Bin 0 -> 63972 bytes docs/src/04_solution_strategy.adoc | 33 +++-- docs/src/05_building_block_view.adoc | 212 +++------------------------ docs/src/06_runtime_view.adoc | 60 +------- 7 files changed, 46 insertions(+), 259 deletions(-) create mode 100644 docs/images/Level2.png create mode 100644 docs/images/historial.png create mode 100644 docs/images/juega.png create mode 100644 docs/images/whiteBox5.1.png diff --git a/docs/images/Level2.png b/docs/images/Level2.png new file mode 100644 index 0000000000000000000000000000000000000000..7360072d63062fec1046f39c76a222a1ded8e58f GIT binary patch literal 17215 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 B=nen? literal 0 HcmV?d00001 diff --git a/docs/images/juega.png b/docs/images/juega.png new file mode 100644 index 0000000000000000000000000000000000000000..3e5a228a888876bc86524fa205982401cbcd9786 GIT binary patch literal 27505 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%0D$%KhWiv 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 literal 0 HcmV?d00001 diff --git a/docs/images/whiteBox5.1.png b/docs/images/whiteBox5.1.png new file mode 100644 index 0000000000000000000000000000000000000000..40cc0c08d91eb9e4494d754154aa9a70f7bc68fa GIT binary patch literal 63972 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