final lessons

This commit is contained in:
2026-06-07 09:50:25 +02:00
parent a852aa0d52
commit ceea2f206a
40 changed files with 906 additions and 8790 deletions

View File

@@ -0,0 +1,99 @@
%PDF-1.4
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 5 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 10 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
>>
endobj
6 0 obj
<<
/Contents 11 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 9 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
7 0 obj
<<
/PageMode /UseNone /Pages 9 0 R /Type /Catalog
>>
endobj
8 0 obj
<<
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260603151533+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260603151533+00'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Huiswerk) /Trapped /False
>>
endobj
9 0 obj
<<
/Count 2 /Kids [ 4 0 R 6 0 R ] /Type /Pages
>>
endobj
10 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1787
>>
stream
Gb!Sl968iG&AIa;CbHeVP99l#!16EVD49*5:=CJ'HLV.S+c-h#-mWBKpt'-Z4saFAXJD7FP"$'M@%Z>*=HER&2fmm:-,AsoGk$Lhj"Qo%$V18mF80h;IIRT(\-PDD^8-5%J],9N5r&%Q#U9u$4D#_8+Ar=R84KD6-#d*:";=UFQot$Y&.qb_"!Eb\Oc41ZpIW:`WX_Q:7IfgB`]e+]Mb2E#LM#*Z'S\DGj&@DV%gZa?#[t)nPJ>t(5(ccie`D$f9EtMrKc\Pi\DUW-DeJQC?g5e9FR]K'Eu7'J$3ihLLlk5)Yq>TiSX(4#/8?V`X(e"Q?ip]W0SHQaLc9KG4sM6]I16(Fnb")2\+B_6ej6-oiC-F"NU33%YTrE(r]5Y9f3L)m',lVLY3j7RiX6Mh-]PC@T%,:U7`O<CG31[)\e3XhUV3t<8(!8(^RP&DNu^[1Gr#u;8skju8)H<N_flr[(le"I482UJ0BCK(/dR_!PeHNJDJ"%6\e47TGL?6CNR1uMm?N++moEO]6H1;:*=E,`=cB3)<g8$a^jkkYF[WYr&6QRoNWF=.TUG;[%g#J$<5]9YkISTY%_+*L\"W7-JN63hmh?_)QnrLX9)WR"!EUV;l9*Iud<]eN24tptaTJSP32%k_0V[BV0-58F>K>+ul7D!:A$tVOpp+4X`n-i"Sj3umPATq1+cc7kr`Buu\pV&"pX$,]EF[ff<'8nNO'M9gSL80Oo1ETU?8VuiHBeAqf_^YHA`&_R9Bj\BBSVcU0P>Z2Qt/@_;Jiu9=#`EoGGcfY3HCEu8BQY3%rg^1<.%FUN3lcScOdBLgh-D[2]m3BG5r+?goVjQnd^3I$%^u.\@E9%I#EUr=7m2l\C&6;_'@pSV`b)!lNHXOONCo@q/&,3ik#`C$1%X*RL-*T*`p6J%%c@.#$">SIco1f_E[K_U2Q1'PMW"_S]%nG35O,"RA1^`$=ZR0m^7C_'B$WK_O]N.<g9?hYHB2124WO,P![inK"ZhuHBMtYOc,Eb;V7W]M9[cG*+3hQ[nM)ZUd'iO767&keiE.4XUPKp%!.E'79SSFEM\OLT>FK-R'Gfh2FJiO^bW>5/63!gpNM+,#L601%"57#G#]YIo)&)h.ZTS2>CBYUdfh#n)U[S%Jq\EG;bWNMp6//,84IWms54ngK)[N,h+iT=IqB6@FYi;)7Blfl$L9-:/2Rn]Kdo_H/Pmo%gC@VaC4Nt.QONafq>@a!opadH`9Mp\Yr>k=*S!m7Tc5N:%9JC_"0&Fq82,-&[2^i-V@ji^NNN/KTc1H9"$Jcp6,Z-j1[CH33?00hQFY:Q==hd+Yu+Y-l*LLJJYb]rER4!endq%i,>n";$>O=4F_Z$h$AS5=WNo-o%u:f6dEc#g3a3`2.^`G'aeTDY)cJ:7RG#(Mib3&u8nX3tSl>_nW`Kr9Pt%s]UgCm:d4j%9G0nZn=\X$Nb$1fS5;pA'Z11&^*ugV`lrW>POdqp6`c6pkYESY\NTF>t*FSC[b2Jli]]Fep]%!!7'!<?KX84[5_H.Vg0M>&%q@LYq9Z?*QUf+Wq\Me6T_r*u2oIR4<ZOCaujq*o%XX8t@?].!<=8S%,*AEn0rc&?#_s#.;W7U^X*9klm3jNkA!)*StDeVm_0COEts'Xs'GO3D+3,c3r^t@`.!mAlSgEiG(n:1aZ/AHO,ViQF.:9f\Rb&1"uRRu4#j"oEl?`3K8VY6*30l)_ub,aZXqj8h/4Zm4A@LpY]D*o5Nn/1V?rPUHAZ:h&EgS;7^=$$BCQ@o-bNhI'DU+WDU*dD#m=5:m(~>endstream
endobj
11 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1522
>>
stream
Gb!;d6$(aP%)2<`e/Rf9\_d"*GF_sm1hf!bPGTV9jPh!W#%LTd^jGnM:GrDn^]Z'LB`j"h[/0Dd>"Q=79R<r@^Gc;jfRik\$lFb##FI1J['&>.X7<6!E64BL_6C:\3?/IJb5NOO2F=XE+W]u)d&&S*&g0"e[!"9F>,N'5&0l;R2&I0&RS!rA1pa$EC[3Q>E_auuYbcGBf,+/FbWNq-Klpqglq,>jJeb's=tO0MbZ6X/L=#jII=DQ1U+Rd!08]h@94RU?.6MXRi56k2i<4dHK^i8[oqD%2""5T5Or7/cWiG^7fMA@]%q]!_go_a1^e5SpO:15$,VSL^>T2<S"hB)oLJ.Cha:.V;3B8O4"4(K,]H4Ij2rh_MiF@gq)u9gR';kPhpaO)4:FkRD2TQRYK.<fD6Y/8YSfq^#D=HO&GG0:(@2FZIkRUrXJ/g,L17)f4#^m[g&JF_6+,ccSMOKVr#d,+Y<X3Npp;:c'R^mE)hmVcR9T5;U86'XYS%3M2IFY0'iDPdc^<U$\NKPRVqh)H(8M0iadqhm)TUGgB"']fj2HR/_k3FlYB'tuh99X!\B3F`FPcD.>@YW-pAnA28r&/;&<UD`MmnmI8Fe8`:L!`.t^D`Fbem;>$d7qY9-4im*IeIL9CuM/_gnDL#B8O#4T2/=O\m>`7-m"BN^J_aGl.GS"kUa"4$VqJ5(rHn`#lJX<^[j9aqXrJlZ1_YU6?cP7H^fl]=0)E"YQF=ih_]L"`?b,3;<YX.[_TOb&NHirI)fq6@%&BFici<1BFX/q?(8+Pn_21hbmdUds'208$Wu@e#DTqU?JnaEp'9)?T/#P+8"E->TG'^lTK%NfDmH8oG<*M7@9lW3a2eQf56hJ#(s:u3oeR$61rH\>JDo3u6B8#R0+a+NjGpZM=`G.YHj?h60WoVp+EH4PA4+t.ZRP6>cV6'1>&Y-FI:Bm,UE>2h[0'?V(t/j$0ubD@AZh9i'@UXT"<O$h#BZ+)%7N<@V&JOi+JG)^3.XAG1b+/+o\&[<D][eRlUJp6L"O3VLO%kf.HpeK9(;ALmF!^4O8_;^*X95X6VE?4<Q",7q4?j_Kqm:W>>(*t%ii+ZK!F:47nFXH]dV.O5lG7/np6[@D7tGu.'Z+!#\Bo6R`NN8lFL3Cc(@1$I%B`'G-R7hme1CVh*eT'-)@)?D\V-`>R:8q[D?Fao2]?nmKOWY3_(gkJGp^nq=RPW-q"d,,[rad[1H>tQ1naMcnF\G@]N%+)Ye&].(Ms%2Y0S4LIrJN,e/qj,D7ih4JtPJ7<Z'K3V?L_b#R5+-WiMSCdK\k+/68n!]OcT&9XZ5a0[[=B%]HpfrRI@"XdNcgit]>$`mgRLX$QBOPRuWZD=5LaX&lXq^0QDnLHZRPm"FXqb"%UFV([c7CgC&(05lsW%$KZp7c!J0V)k&E#E<b'Yr&k4iNY"8>URuSmjTb#jgAI+/inFXu4`l(i/kRBBZeg8;lg)pJDW;STkbNjQY>Orpl2%=e]I%99mY'.DfT@_rT&L$8h_e=D%*L~>endstream
endobj
xref
0 12
0000000000 65535 f
0000000061 00000 n
0000000112 00000 n
0000000219 00000 n
0000000331 00000 n
0000000535 00000 n
0000000650 00000 n
0000000854 00000 n
0000000922 00000 n
0000001207 00000 n
0000001272 00000 n
0000003151 00000 n
trailer
<<
/ID
[<e6f7de6a0b8ef06b94ec03bf5e53026d><e6f7de6a0b8ef06b94ec03bf5e53026d>]
% ReportLab generated PDF document -- digest (opensource)
/Info 8 0 R
/Root 7 0 R
/Size 12
>>
startxref
4765
%%EOF

View File

@@ -0,0 +1,193 @@
%PDF-1.4
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 5 0 R /F4 6 0 R /F5 10 0 R /F6 12 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 17 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
>>
endobj
6 0 obj
<<
/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
7 0 obj
<<
/Contents 18 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
8 0 obj
<<
/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
9 0 obj
<<
/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
10 0 obj
<<
/BaseFont /ZapfDingbats /Name /F5 /Subtype /Type1 /Type /Font
>>
endobj
11 0 obj
<<
/Contents 21 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
12 0 obj
<<
/BaseFont /Helvetica-Oblique /Encoding /WinAnsiEncoding /Name /F6 /Subtype /Type1 /Type /Font
>>
endobj
13 0 obj
<<
/Contents 22 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 16 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
14 0 obj
<<
/PageMode /UseNone /Pages 16 0 R /Type /Catalog
>>
endobj
15 0 obj
<<
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260603151533+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260603151533+00'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Lesopdracht) /Trapped /False
>>
endobj
16 0 obj
<<
/Count 6 /Kids [ 4 0 R 7 0 R 8 0 R 9 0 R 11 0 R 13 0 R ] /Type /Pages
>>
endobj
17 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1890
>>
stream
Gb!#\968QQ&AII3oQ&RkPSl<Qf4ZfO$Nrd"()B9;[W36YD+D#c)*R><_uBAsO_%+5`3E$=Lf:`>Rd'"erO'kcU_g5kK.4U.I<]eXJICZPJ_SD'r[#5D)da"#>iF?G0M@k#07`kare##t,iH2VonC^XRN@Za%CY=k8md1CF.UE8a:O)e$kCL&9i'KY,^3MXDOn8(.g2i[RH(mXk5!^pWQk%&>?aU00)nK[mGPBNNE")5-?hQWqGTA#pXeR9Gb'jK%rTfPL/16m_+as^6?r"d!aae)j)g%/6g0T)s%"[(#dk\:3L9'7$baJ@SV<JH"MIm3-rIcA69\3[=&N:#S*!nEH+mcco_4*mE9Z0-YWZV:<tf&Sn<kt9IA[`s='D?3Fs/Q.$dL>93Y'bSgGP=#*qu@j`jrk>eL536!i'fu2JQgJMV1TX>@i@oOr6!ffDFkE]h54ZD@B,gj&-5BHkunqX+H2(B\]6K_BP,.-bI)#O."F<AF$kslWoLUAjuUR>Vs/R.qU<VCmBFXmol*r*6ojK*OD/Q\51Y[.OtC#@fOP1l#:cj&?nQ.+!(,S9lnVn(3jAaBmTac^3$O[D?n;L"]4jq?M+J;Y@O:$Jnl;rn7S$%a5@/[*"o)'\ACNQ'aR_hW7LAf%[-)@G!a0qh9ZkE@uFs:(W3=lYMqe_R?b1Sl!^Xa-:q;\+\.jul^`YnV9RW.XG'W5nEbFgj^nG3Rb_8eI"IK(rD<$3>s*8%o.gX&'U(l&q5nC*YiJCL;f_=bIO0>FhGQs]G"4WaebH[GMC]4[TSQEge)0-To'JV:KR&_.0?Q&^gQb-[Drfkaa+7rhPQ`E2/3h8G/'K@31n,Oor(4>(,[iNj_@eT[ddU[4;c@?tBM:s35oYO/DP/>`g9Ai\J%q_s7FeIb9YkoNAY5\\#p4@![!ete\,eH>]3#`YYh#qo2?INq;*[rr=NP7Hh`\p:nIF'KCkVGPN(QNGhPMIaOOp52.rY`@3bR"EconikFkZq]-M(nk\2@hUNDQYbHcNV'i4BG3Wu4R3q?CP?MXd9aB_;_;VY;M2^/GU&2hYe1RZn,;nb-F+B07>!C(I0C#qP^/1d\gtqO2cfX[Wp<0,_FQF];=H@KKD_#kKGt<?1+fd7Te')%`,M35K-$An6[WI_:Rd;W%'b<P3Y8LCk$%1*VJrSH@50^768.MHp+7"VoR.PgD?Z(h02537djmQt>N(<pU,\9:J.0&;O0U7NhR"0EQNnJk6J"0pXlL3XeG6NZk$'&.PD-b($3;j)1Jn%fGi\T?+K_PD(u'ci'c"`rUIO'!cZ&.JY2TH)<a^kNr64lUe8YKCP&/9:^N2+dg\:`h9!-2iH.g.r9^T/3&C!/Rd)F_m8oXD@k662LI.q>c@co8n2e>-s9@7V?C>NNqPVH^N6W,6`F._;ho.PJ2K`(,]L[_Urb$W<R9K*e2g.D"Wa6$QDrtB%2%,$Fndi[6TTl$L06>S13cO>-A-"0/PSPugX@aFDfFh.f`4TJ;*E03"]C3_=[DZ`1Gt(EqsApl=QWe%Ne5_!Cm?X$/1c+c&IMRp<4cDc<j/f)s3?0Y=O72&j;`SN5)k7QoqY/!-)`nd.bFc&F)cl`)[/_#`[E4R1f6rIqEBGf\`Iuk*^T9[KDggXG'Y)Rd8[)i$YpO=W0*Ne+o;%o0KNicK3?o\+f^-m,4?,<UO^_<,?tdm9[b8]6'sR+Bn=t1_dA?Bmjh-Q!gTTn?8p.%5g^/^iU`F+W(^9=-SkA[hRNIl!kl@YW$%bI&>dL/^mmXdT]8m=`?\KjJ^Qb1eNhh1O^FYjW@\UYYJ?Yh\t5*$6m(I#<>N.r/him4K=^qEd.aL;@koLA)tpD0bD"!:T;HNO?(^H[m_(`6]g0)"ZcOmr(E4-AnK5i`Hdi~>endstream
endobj
18 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1729
>>
stream
Gb!Sl;01G^%"@rS;"I*0\W(gH[b#e?)q+@2D<R8Ik&,Du7Y&="?/*_orqb*t?jHoKE_U.d^r0ZdV,(:ZPI)<GHLpE?1]r!WL!pD>>X3K=>VZWA.qj./D\a"Xn>-N:;77,D@"DfoOH6IW>`X/]#WO6eB?HP`'k^,B$3WNTqqQrH@JJ")^jOK%Pm!tolRD;#k8i[k6)l5P4YPH:IYgi<GQIE%kQkf!+^oHt?Q.HcFX4<(latN760m"mbm1c.,:oRoed6^UF,\*boRu_mbm-5K"XZ:Jr$?G4d!]I>C^?</c!3d8[tS-sTsI$+2M+!K-r*,@)aZ`P(KXKsZ%V6DS@Og\(sOVOD'!r_U?5Xkg:53JT/,BRH2o`oqL7hgAhC9`ZH\$fV.L6#AkUn9>Z%PK,-+l,/n_WYnk)lfk)fU+#?J^Plde!P#auJ@[Jl=kSG>cor+rQjfkXlUAZroqoVKC8I"#qWqVT@4>?*5BGJ3+9(CgRJbh>`BULI`^!Yu%o4Gmpn!oK3lSoFtjp)iZt0L:L"LnHQF_CXQQo8O=L1Y]Bk8dNqMlA<stGoK/P-X;/sdh][rdVY=jc`J>t"s:a%$A^-9>^*A[&Z,bMM,R+.FEA@55lPp/,p*@?`J@G]Y*&-+pmNKi*'bEs3P;tOds^-<_JAA)1s=q$d(oX@Bn>MWcsFM`<(]7_B\0GnNE=OSK6Q@[1dG^7jg&pu#R=IdEKVI,",+slf,m*1_iU_<4NCNaK@k12mg)c`G8YK8MMFKVOQCeSPn9j4A$be#blOBlDOiBS$i<@tiet_J$"="S_N/3bl=u!!%*mUuX6[Od0Y5(__W4H!<=U7FP_MMKh]Vm[L4b1r"!'+Y6$.E=[A^)`U+1l!04gM^QtApWhSQ[)0b6/Wo30Q8F^)+e'[+XMW_j3&%([eY.8G4Am_UMMHS=j-+bNuYaQDco7kq9K?'kR`EJNP5/-bt#ltHC!#frf`6p[2JM*MOg&0hom<VRF/N\K$D/1I:VcKRGC8usq9mem_ndMMY.9b_Yuf]"gUb"lYsQ)o<7[2Bs-p%,2\1nG7Q)mjotJU_2mm=s<S^:tJ[6bNN`MJq]>C?n&a*(HJtJPd:p!BM6grCa#",C1pKT9u!!!U%FQ0N-u5V_`ItlR5]h,7YlmlM02&Acad4ot8'CVKu8aYg$$@BA6VAJ$U_c,+T6RS_dqJYb04N[B?9`UHC,%'cY(g=N+sW[H\T(0&(<iY<I>KT7@sa'k>^j=3XN<*fO1jKN:=YkdU/he7i?Y1`Z3$'18<U74#gU:+/VjT/;&Sa-)I,%(U;_A=OD/+\Bs$7Zu(?]=u4i$kn;CU8QJOc6ZG^k[M[KQ*40Ik]u@DQXrMVisCi4c7l(u9PdVDO1H/mk?L'gF@tpEkQR50,)Ka&^TZdq\f&&./r>Qgns;1LiX@G]WG0)6<]uq^Dp'IikM\!s1G]O'1tY\_:WY0m`n'nj1G%k\#nF@<g"f=EBKZ7.1;Q19+2L;0*(HBo5akuBQn$DK3Vs\ks.u:t9P-]O%.b%qj/tT-957LOS0^9Z%X9qPBPNuhOQQ6<BQc'*VH8Y9W1sLafB0egef6>bE]p*3*.A!a@Oqn3%<%R<,7B]j`sd#ohMW8]g?GU&XIe1TOe#a>h`(XAfPH'GZYiMSg*mU^9bAbM/C*PpSk2X'$uW!tmPm"*RF(5;RTO=[:G6MDK_t7NjurG0H#-5G8r@AP9>_CORiAU2"ZWtUrV~>endstream
endobj
19 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1609
>>
stream
Gb"/%9lo&I&A@[:lo6el`"PN9!(kPHfWin!m)6$UoFU`sOXh:b7Bdm[-iWdEI`cQ`0QAb:N[9YjK#HE!h8SgR^nn6dr24=\UDZa#4n*id/\pD*_s@e,B$R"Yo-6K^+g=5A6/hu>K),R]knF[u/5#iY"6%6n`#Q;VQk5)ST@Uud(P>"UloQ8m3-&NFJI*ug7.f%+J471JVE#$Z./Ec:Nh<97,qS?6&^C#>@.]3*D/)<F3-2be%Ulf#kO1W_Hj`1)-!'8qeiEY?%Am2B/q#s==)[%TDDB`hRMRZiL=q#mi!q.G>o!W,^(5OEPqFj;#G;I8</$"`%`g<a`?$>r4)3R69LP"5hKP@MH3k%)f@JK[M]D::o0\sB@.!GCDV[CujUN)E]l5nf`#rMAGN6:kU44P5L:P*X=WI3&"#\:K/E&l#4a>n3m7RP6@>:Fu2n;9X+mqI9G@9ja<pI1V1-+/!>eB[@h<]lqF6,6h<.EYa:JM!_R[eMgkd'2Cd)`H[q%<BnaJ(A%A+j)/:_b)g5cK:BK!!V$\PMn0bg@WqZH-"MXNDl[m,=0Gcpb`Z/o'lo]G-QJ\_g:EWftf.lNLgDM`hN;\#bm_Tp7+R&P\!V)Id8^P$=8a\/jTCdO9oApi+()^h`c4miUl4ib*VJ^H[;j7'+,RWt&P2V*qi0H)3&5_PaAt;jb@S2Kkd8V.oih4hT2hNK/%mU^Pn@r@qc6cA(f"@;"Z7Pj?F2ZeAbsj<L*t<A]^ckfHJbX6V?i]pYs&Vn'Op)aj@If'iJ9?>IcO7Uo$27h&:+V6QMqH:bC+.KYT.>u[:NP*:bXI+Mrb:&)3Rmg6fs3ouq0B2jb'bNWau!aZkO0G1tP^`/f5NEX0%-rULhZnS9)\PYd"a4'8Y<5b8He3TWu\H9oAWju,$qc-jRbNEY(=#h<QPc=$2M\3bOVrJ_Wm@D^7'jeZLG<'OL(?6A."\[jRhtVn&CMCLZgtDmUk(cfQE^YlL\_PtF^&YisH%40N@IH[S2/"4mCE1M0O6VrK]=h^O8E%luA%K$>(Pql(KGu["$@B3'lI6j,1g[Ul\<b&`e&;Yg'=n6f!A[B=4<#N5"B65M7/5rSW2'YAVhX"gHYV)R4uq)<"[BgPD.D)_;8P:/_XBDRl(,]V&C,EQVP*O.XpU%RXt$JcF#5U'$+6MDYr3o=S#Y_+ZI9`jIA];g=j>Ram@AX5VKUEKq5;rjXhl&Deja@UmF>(j43g]$8LWLtXtWr/X"iLOl3BU;;R1qJDH=L8>^&X?F@lI`'8i*Q];B.1UGiqM5W.e,=c-G.UOGOLe0^r$)(X=g(i$>ID)2'tk4/]a1t3Kdl4tbdP2&9DND(KlFiY8R*=FB#^Y]_6>"O[fmO&OG'fR&\8hC@CrS<fG/i9Oe3@,R+[Q:_^aNm(Kj-inAA7TY9gJ+7[hQusL74N=W,"2!tO.Q!ks$\"eo'!gNre1pKp!+f4cErcqFgYE7W!\1nHAfb+_"gb4S?J1%A&ZVImtA<V:'mlL*7Vjaq]P?`RI:e7O-1FU[)t\<0do?>pI*"3l'2XO(Ka\>AqRLU#->h@/6\b:6X"$SbE"0e-.`SMKOb,-2qCl!4ir`)aprCi!hiM`K`~>endstream
endobj
20 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1786
>>
stream
Gb!Sm?!#cM&:N_C9R&<Q77\qC-2XNo1^TkL%3uDoXo#?2(3u%TX%4a^_F&g"B-m?UN'E@r6\0kM[\THUF6Cj)`;ppmSa,rW"Rr8r-gr'p#]t"#nLP3^(\"SSnEn"8PQ[QgQ5eOqRt0%4bnoI2JHVTKZq]6aKQ^aWJHoNF=CKhlJ`(rBhuo-_\9WM\J/(mB#X,CYa/:(d\DO\B+h4mlq38<0hqu?gRdf#HD5+p%lQ:Kk?K!`6VGD=tbBEg!L[GFO^ONgYLCYls`F,WD$=@r$#=Aq`639,0LUVZT;jHnN#eILlI;KaeH`6,^QLB.9_hVRf6=j$>V@U7KZ&fC,\VFEu(+2nOU^8VlM&#lqLY4UXG3YkeIXR$q#1"iHo%rH,.TC'odJBS?#$qNeF#D)s,UsHjf6;9gU"=<m,\6B-5s.q5j?/5(.p`*)#m%SGf3G:ApgqP=fjtt//pY`fY(>Wu0orhV,#.TuLdP4^B>I(H&Dr%phfBVbr&>=o[6?q2p?!Q(N2ho78l$2V*!T=j%4^[CX3AG!@G.-[5SP=d%.UoQ1?N9Oa"Xs(Ll^MTkD??*l175_(eq3%gg"Y.5,J-.\_ieXGRS4bip2a@HVMb_%H:<5/gS(*\.2oL_ITYMPP[]Qh$HfAWl#G`o;lqtB?dcP/t8uM'd:m?8B,]FZd-p)^"-$GXQZ1Ee8MG0:'bqpkf<tlk\fT:<,B'ZG^.EjRcadESt$,cU$Mk#$re\K$@(E6i40fBo6,b1RBcsmJcT@.Tb3Y,W5r:AGoND#]:o(gM?G6(d7A*('k$`e`SU[=DG]3Z7,0,S,3HNd;pEr=iNAIQThiO:3c="qNKBdu7d.iajY1)Q.LVgL^1!D$7mb<dPs7\t7m]qR<]@@c!Cr7d#c6.1'p!Z2VR>iGrWt+*cV#hC%F-AEG?e_nN3,SB46n3Do>tk_ldL9$T]ZHodNDi9nf9*"k187D#)B*R":R*s757\<Y]Q2i4/%GNXs+Sm0+M&\4a]G`ZaFtl.H16ieJrE551')9$6-7B&)1p&mBHQ/&e94If,UmAlF7\laSM1[Se9^pd(\`4BoQt1[>L<i81App;N.!Bi=c?"Wa;:o0=]A93JqNX_qtL53JLM_;Zd!Y"_>V'Ze.U.=6gIPB'cSGX7`(5ZhNfHBa5Z"QE'D]]rJ2ifk.>WSC<STORA^T[mEI+N9Rn9km`kDh^b:;q.e=/MosG:D+L:s9ZB(f/Bh=MgC[iD3,&#4)d%<NL0O#(*`;ifO;gn$f@eQ1^AnG.nCs2fThbikE;,+r)DO's%J^m!X`6tcX(C0,W6n5LrW6'm%qKD11"@g8Q^UuPEI8TVE`i(cTlD.Hro>Bkmb!6s$^dkDj!h1@.8A3Z2YA*p6[\a/JX]F^!Y\T0dFDncP$JKNRk$C2Df`5S-rHTarcWo(-G+T;s+8)1Q.L:RH*Mu8PgHr.iDbarI/SH?R8h\,#k+lFmuGd:hkE3<``;[_Q=V_;cNnrlE;*0G)LsA)WPimnc06g)pqSn+ahqmpkdVO5o&o[>F9;<RSL)lJ@kk8C05<*d.4`asTq_]IJmk(M,hnAE.kYnn2oh\*GO6>N<GFp)q&Qg'NEC>eK7&X-JE$VMRs_:un+ko]lqFAqNB.Pu"?+O/QVdttS$U@CqEZX1eRT&gm\"E<4mJN0T"_uddgJ'0&=k/HqL8XI6%$go,7H$4b#LqnZ_c(:bqHb1_G46^:sF\^*glQ(a=LU6PD)$P?rWg+a43>a]g+^3_=*++;e/1p<A%`(\_6eHXauT(@QnPL^qi7K%R8A~>endstream
endobj
21 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1811
>>
stream
Gb!Sl=``:f&:XAWk[Io?V+@A.?a^Tf:9sD%'19'*>CIHc#0$oXOTo(\YMUB-M8KTM2WYn_gDi"4?[mKb"XZC6ibpXWGhIl8k8%/.qEqJ,_h%djSFo[lS/BI[^>jfR#GrLs0LB"D5W1Yp_=\3iA>'0Xko53BJ.l$S&;1'<g?8@!%iN7RnVIF(n!SX_J.Ynd(O1/tgP3`c*UO]HkCq[fQhUUk0/U<f3eCKu8JnS6Q:f\*D9"=^f6<oQL$niQ5JMn2EeJ]pQ84"e.`5r$i/062?G(tn\A1MX0REs$CZn"6#HS5S>gmY/a57SWJ[q;i)6X3li$4A)E7]bj,Soi6o5/(BY3?MpoX.hL?#!6h_(=rgC+E9\M:cjh*j_r!2SmcpT:`G^A7=-YQ0%l^#hLfbQJl"J@',H@o%>/?g6@"<Q%T<:i>Q.EB*'k_JN-/b_c:o<$LB.%A#'7iE%?aT!U&.dUH<]aDW+c=B-#*br@POcN(2qLF6OV:rKu?&HogETonP_!10n:RF(4A-qm5;XhN8jj5+kQ:8,6+;aq3$L/62(?R@MP:4Fn>XKHj14bqPnOEis"qeVN96#b^oiOXb=&aTNcZ@3gROi^LA=i`!c-+&X@5b$L/[*_i6C,f)Kpfi*2MY*1cKjLId,bmtjg$e'oOU#"du;GEW7165-^_8A96Fk0iLV3i"I2;35-;8UdaUn`<<Q7\YuMpkb;\e39L4ND".GpTu4b2)rHm5sBpLEM:@Oj%8Xe)OR+d8SEF!`Lts"@4H[FRFET-JTSMJXW>G%^NX4.(k%?\\YIP[P,Q#W=7#aq/o<:[E(5.kPV&Ki+L7XU`TF(U'dn4Q5%<mnTBpGO&^96EOOo<)U[sVbcDW9T,k+IV\h)>ZK9^e]Vf7u-Afg5)iGVf'*]Bu>4M<iUm)R7V&9pMDcK`GCj;n<L4r="i?9Dc3)E"ZeKa8^kcX[9SVjA_h2A+/n"Ys/U$`e<;pBC[;6BA??#,Bq%sg-Ms0$T+c=+hZe([M*]n:q8SQ[%qlg.Sl6S@,s;\@]!40mK9_?7t7r3:U7T["mrLJd2Y7d)g?^&#("f`3a`f@Fm'PAnjAY$JW6]=t;WWc%-p6GMqN&"tMmFuu&3,?5H+4r;>#87OXHofB^o'-%drJFfp[ILfj9ATg/M1"WbX??SRDTl\,X.EIIG'PV<@;r3JTFB`/<ks#"VU/GI0o9YCjUZQtS;DI8ob6XQ')j*rpDIKTL1SdlWOGf)r]aIUb\(g.ehV63#NEBH#"dVg(<&2^t>TQ..9%Cig7"Wa>,0L^$fNaB`7O3-r%mF:fBq'+p9D@fuR:IdG_%Xm'6.RO!kO"Lp&?5rF&R$,dI^.:&2FC\0oD+<*bI`uOd3kV7$(h[::-?T4"\-4d9:(8ql1b%mY_%DYPkURf3-K:+(JlE.bL\+r$TE3;T<8fqI[`U+\NmK_C5hVf`WFD:^p&35cN9H`$iY&JIu0C(@nat'%p*U[Ri;UAWnOZG(88GI]V/7=Uk5o.:hDPf-SQsB:k#8iVqD&<%[cFDho1lJg=0b.*+DN2WOU,F?YY\]b(54P8+S:(kKOJ&8dgQbcsj$tr'pi^:e)GB1*U\5dlmO6b?UsJ72Hn,?lL%+BA#4'cqP?Qa@'"tAht]bOG3<qEVd_I&^PYB::JbV/Tnt)g,8=7AVa6T?!YqI;q1I]:=7Tpm@%d`!&L8sT.48-.9bmaBiCA3:V6(8WUgS+X03l\W:ps1r@T<K?6?H2(6]ocKc8pPUm/Jm`?0M-IQ&qB4OPRm&^>GPQA)nL7OH#@h@s#HTjhLH%P>TIYKA$s-iX5EY&P]~>endstream
endobj
22 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1047
>>
stream
GauHJ;0/3d&:XAWfR(/K3tiJ<+WrG+o\*V,m9JDFP:+*V=>2HP<sY_Q?[jTm3$aN*E@t1Z_#ok7rV"^L.s(4DbPQWi"2(,?j<Fm^@%%1a9Z$EXI$fqCN0mEcPQ<I&o))SiMgb=#;iDV#'N;8m3CI2pU/6H#3/aLj!^Z.hOG@3To!]hR/6#pm8RN,@<2=]gqb.;^Td:)2MBB"Yn;A:"R&LNVU:IuDN+VQR;Hm+-162ZK!7Mk+s*V@>LGN4DS'JFEi5-C+k8%YrKQ)5Imr=&H?D;]Idqb>bFTD]>1@SE(bO@^ZB5I5r1W^ErCJpBk!bq`+NE!PZ;.;mE'T,>1-V=97735:p5e3POO/,^XK]omZI+D:jBQR8j-hkIf")g%o8e(oLrU;jADZHt"JCnc>mJ7+dkV0/[bB8fTjuVO2\<j#;=ho=$#I.Zbm/cDE_(SNG'QB%NeTI`aRYgoI);X-8%7s=fIU?E*Yn"qB]1#u7]]MeLJR62cCBGG@VGh<t;p#!Xgg66!?ZSmW/esr?AQmCW^p!UI\sbBICl-3:nlUXI$,(.`2P+-bCl]s-_;!Y4*I?Tad+fD.U.XpO$67g@-O=WPiVus@45G#G0mrb19`eU71Y3Y)]io;6"EAOE_a0H7Wfk:#2IO^DEm"g7$%+W,$IKjnGCKmsqqm)kTKak)28$r^?Ad1c1u?tX]5VPI44&P!0OF37fiY&!m>TRc]$"gsQPp5s;D-M\^!oBO:#/eq)R:_IGgf],BfWP3d<&$c)P<rkq'puPB*]\g-HKnb+W[a<q4u^Zj)8aI'O@@,KiLko8d?`t(2C2qOm6M3oT6.o.]jNV-fg'uQ"cPO"k5TNP=MWod%F]6,l\`+M3j*!eufIiHgK1X7T\,;E]_N+AaYHD#kK$7lfq:kXNC[3L(pu]'5G1;)"JPR]M+5>Ud#c8lPERL(>*;;G?)1%D1r.Q6J8riIYFmmT[UD(UDi?i,.f[]4MPOP=<5`ueUtcG92jO[ij3[N,g61-9Uq%*6m[IIHDfpr"Vr&t'BpIKC.jHq3Psue);(bS~>endstream
endobj
xref
0 23
0000000000 65535 f
0000000061 00000 n
0000000144 00000 n
0000000251 00000 n
0000000363 00000 n
0000000568 00000 n
0000000673 00000 n
0000000750 00000 n
0000000955 00000 n
0000001160 00000 n
0000001365 00000 n
0000001449 00000 n
0000001655 00000 n
0000001771 00000 n
0000001977 00000 n
0000002047 00000 n
0000002336 00000 n
0000002428 00000 n
0000004410 00000 n
0000006231 00000 n
0000007932 00000 n
0000009810 00000 n
0000011713 00000 n
trailer
<<
/ID
[<e1a466ea5dd58fb3081b3d5e8e1860e2><e1a466ea5dd58fb3081b3d5e8e1860e2>]
% ReportLab generated PDF document -- digest (opensource)
/Info 15 0 R
/Root 14 0 R
/Size 23
>>
startxref
12852
%%EOF

View File

@@ -0,0 +1,376 @@
# Les 1 — Lesstof
## Introductie tot AI en Large Language Models
**Vak:** AI Fundamentals
**Opleiding:** NOVI Hogeschool Utrecht
**Cursus:** AI Developer
**Volgende les:** Les 2 — OpenCode + slim werken
---
## Inhoud
1. [Wat is AI](#1-wat-is-ai)
2. [Large Language Models (LLMs)](#2-large-language-models-llms)
3. [Hoe LLMs tekst genereren](#3-hoe-llms-tekst-genereren)
4. [Hallucinaties — waarom AI fouten maakt](#4-hallucinaties--waarom-ai-fouten-maakt)
5. [Het AI-landschap — providers en modellen](#5-het-ai-landschap--providers-en-modellen)
6. [ChatGPT effectief gebruiken](#6-chatgpt-effectief-gebruiken)
7. [Prompt engineering basics](#7-prompt-engineering-basics)
8. [v0.dev — van prompt naar UI](#8-v0dev--van-prompt-naar-ui)
9. [De slimme workflow — schets naar website](#9-de-slimme-workflow--schets-naar-website)
10. [Ethiek en valkuilen](#10-ethiek-en-valkuilen)
---
## 1. Wat is AI
**Artificial Intelligence** is een verzamelnaam voor systemen die taken uitvoeren die normaal menselijke intelligentie vereisen — taal begrijpen, beelden herkennen, beslissingen nemen, leren van data.
### Drie generaties AI
- **Symbolische AI** (jaren '60-'80) — regels en logica. "Als X en Y, dan Z."
- **Machine Learning** (jaren '90-2010) — systemen leren patronen uit data. Statistiek, geen regels.
- **Deep Learning + LLMs** (2012-nu) — neurale netwerken met miljarden parameters. Modellen "snappen" taal in context.
Wat je vandaag als AI ervaart — ChatGPT, Claude, Midjourney — zit in die derde generatie.
### Generatieve AI
Het specifieke type AI waar wij in deze leerlijn op focussen: **generatieve AI**. Modellen die nieuwe output maken (tekst, code, beelden, audio) op basis van een prompt.
Subcategorieën:
- **Tekst** — ChatGPT, Claude, Gemini
- **Beeld** — DALL·E, Midjourney, Stable Diffusion, Flux
- **Code** — GitHub Copilot, Cursor, v0.dev
- **Audio/video** — ElevenLabs, Sora, Veo
---
## 2. Large Language Models (LLMs)
Een **Large Language Model** is een neuraal netwerk getraind op enorme hoeveelheden tekst (terabytes van het hele internet) om de volgende waarschijnlijke woorden te voorspellen.
### Grootte
- **GPT-3 (2020):** 175 miljard parameters
- **GPT-4 (2023):** geschat 1.7 biljoen parameters
- **Claude 4, Gemini 2.5, GPT-5 (2025):** schattingen lopen uiteen, miljarden tot biljoenen
Meer parameters = meer "kennis" maar ook duurder om te trainen + draaien.
### Training in drie stappen
1. **Pre-training** — model leest miljarden teksten en leert patronen voorspellen (volgend woord)
2. **Fine-tuning** — extra training op specifieke taken (vraag-antwoord, codering)
3. **RLHF** (Reinforcement Learning from Human Feedback) — mensen beoordelen antwoorden, model leert wat "goed" is
Het resultaat: een model dat menselijke instructies begrijpt en plausibele antwoorden produceert.
---
## 3. Hoe LLMs tekst genereren
### Tokens
LLMs werken niet met woorden maar met **tokens** — stukjes tekst van 1-4 karakters. "Programmeren" wordt bijvoorbeeld `pro|gramme|ren` (3 tokens).
Engelse tekst: ~1 token per 4 karakters
Nederlandse tekst: ~1 token per 3 karakters (efficiënter dan Engels)
Code: ~1 token per 3-5 karakters
Test zelf via https://platform.openai.com/tokenizer.
### Next-token prediction
Bij elke generatie kijkt het model naar alle vorige tokens en berekent een **waarschijnlijkheidsverdeling** over alle mogelijke volgende tokens. Het kiest één — meestal de meest waarschijnlijke, met een vleugje randomness (temperature) voor variatie.
```
Input: "De kat zit op de"
Mogelijke volgende tokens:
- "mat" (85% waarschijnlijk)
- "bank" (8%)
- "stoel" (4%)
- "tafel" (3%)
```
Dit gebeurt token voor token, totdat het model "klaar" denkt te zijn of de maximum lengte bereikt.
### Context window
Modellen kunnen alleen X aantal tokens onthouden in één gesprek. Dit heet de **context window**.
- GPT-4o: 128.000 tokens (~250 pagina's tekst)
- Claude Sonnet 4: 200.000 tokens (~400 pagina's)
- Gemini 2.5 Pro: 2 miljoen tokens (~4.000 pagina's)
Verder dan dat = "vergeet" het oudste deel.
---
## 4. Hallucinaties — waarom AI fouten maakt
LLMs zijn **niet** databases die feiten ophalen. Ze zijn statistische voorspellers van de meest waarschijnlijke woordvolgorde. Soms produceert dat onzin — een **hallucinatie**.
### Wanneer hallucineert AI vaak?
- **Specifieke feiten** — namen, datums, URLs, getallen
- **Onbekende onderwerpen** — over jouw startup, jouw studie, jouw stad
- **Recente gebeurtenissen** — model kent geen data na zijn training cutoff
- **Citaten en bronnen** — verzint vrolijk referenties die niet bestaan
### Wat is een hallucinatie precies?
Niet een "fout" in technische zin. Het model voorspelt wat plausibel klinkt op basis van patronen. Als het waarschijnlijke antwoord toevallig waar is, lijkt het slim. Als het niet waar is, lijkt het slim maar is het fout.
### Voorbeeld
> "Wie heeft de eerste Tony's Chocolonely reep gemaakt?"
Een model kan met groot zelfvertrouwen een naam noemen die volledig verzonnen is. Het patroon "wie maakte X bedrijf" + "Tony's" voorspelt iets dat klinkt als een naam — maar dat hoeft de waarheid niet te zijn.
### Wat doe je ertegen?
- **Verifieer feiten** — vooral bij namen, cijfers, datums
- **Vraag om bronnen** — en check of die echt bestaan
- **Gebruik AI met search** — Perplexity, ChatGPT met web search, Claude met web search
- **Wees alert** — als iets té perfect klinkt, dubbelcheck
---
## 5. Het AI-landschap — providers en modellen
### Grote spelers (2025)
| Provider | Modellen (2025) | Sterke punten |
|----------|-----------------|---------------|
| **OpenAI** | GPT-5, GPT-5-mini, o3 (reasoning) | All-round, populairste API |
| **Anthropic** | Claude Opus 4.6, Sonnet 4.6, Haiku 4.5 | Beste voor code + lange context |
| **Google** | Gemini 2.5 Pro, Flash | Multimodaal, lange context (2M tokens) |
| **Meta** | Llama 4 | Open-source, gratis te draaien |
| **Mistral** | Mistral Large 3 | Europese provider, snel |
### Gratis vs betaalde tier
| Tier | Wat krijg je | Geschikt voor |
|------|--------------|---------------|
| **Gratis ChatGPT** | GPT-5 (rate-limited), beeld/voice | Dagelijks gebruik, leren |
| **ChatGPT Plus ($20)** | GPT-5 onbeperkt, o3 reasoning, voice mode, agent | Studenten, professionals |
| **Claude.ai gratis** | Sonnet, beperkte usage | Code-vragen, schrijven |
| **Claude Pro ($20)** | Opus + Sonnet onbeperkt, projects, MCP | Developers |
| **Gemini gratis** | Flash, 2.5 Pro (lim.) | Quick lookups, multimodal |
Voor deze leerlijn raad ik aan: **ChatGPT Plus** (voor algemene workflows) + **Claude Pro** (voor code-werk). Ofwel gewoon één Pro-abonnement van je voorkeur.
---
## 6. ChatGPT effectief gebruiken
Voorbij "type vraag, krijg antwoord". Een paar features die echt verschil maken.
### Model kiezen
ChatGPT toont verschillende modellen in het dropdown menu:
- **GPT-5** — default, snel, voor 90% van de taken
- **GPT-5 mini** — sneller maar minder slim
- **o3** — "reasoning" model — denkt eerst stap-voor-stap. Trager maar veel beter voor wiskunde, complexe code, planning
- **GPT-4o** — multimodaal (beeld + voice)
Vuistregel: complex probleem → o3 of GPT-5. Quick vraag → GPT-5 mini.
### Tijdelijke chat
Voor gevoelige vragen of testen: **"Tijdelijke chat"** modus. Geen geschiedenis, geen training-data. Verdwijnt na sluiten.
### Custom Instructions
Settings → Custom Instructions. Hier vertel je ChatGPT:
- Wie je bent (developer student in NL, leert AI Developer leerlijn)
- Hoe je antwoorden wilt (in NL, code in TypeScript, niet té lang)
Geldt voor alle nieuwe chats. Scheelt elke keer herhalen.
### Projects
ChatGPT Projects = persistent context voor lange projecten. Maak een Project, upload files, geef context-instructies. Alle chats in dat project hebben die context.
### Voice mode
Vooral op telefoon: praat tegen ChatGPT. Heel snel voor brainstormen tijdens lopen, koken, autorijden.
### Bestanden uploaden
PDF, Word, Excel, code-files, screenshots. AI leest mee en kan vragen beantwoorden over de inhoud. Voor school-handleidingen, code-bestanden, screenshots van foutmeldingen — werkt geweldig.
---
## 7. Prompt engineering basics
Een prompt is wat je tegen de AI zegt. Hoe je 't zegt bepaalt voor 80% wat je terugkrijgt.
### Slechte prompt vs goede prompt
**Slecht:**
> "Maak een website voor mij"
**Goed:**
> "Maak een landingspagina voor een fictief koffiemerk genaamd 'Polderbean'. De pagina moet bevatten: hero met tagline en CTA-button, drie product-cards (espresso, latte, cold brew), testimonials carousel met 3 reviews, FAQ accordion met 4 items. Stijl: warm, minimalistisch, kleuren bruin/cream/donker oranje. Gebruik Tailwind CSS en Shadcn-componenten. Geef alles in één React component."
Het verschil: specificiteit. Tech stack, kleuren, secties, stijl, output-format.
### Het prompt-framework
Robuust template voor consistente output:
1. **Rol** — "Je bent een Senior Frontend Developer met expertise in Next.js"
2. **Context** — "Ik bouw een coffee-merk landing page voor een studieproject"
3. **Taak** — "Genereer een Tailwind component voor de hero-sectie"
4. **Constraints** — "Gebruik Shadcn Button + Card. Geen externe libs. Max 80 regels."
5. **Output-formaat** — "Geef in TypeScript + Tailwind. Code-only, geen uitleg."
6. **Voorbeelden** (optioneel) — "Zoals deze: ..."
Niet alles is altijd nodig — maar hoe complexer je vraag, hoe meer onderdelen.
### Iteratie
Eerste antwoord is zelden de eindstaat. Iteratie patterns:
- "Maak de hero groter en voeg een achtergrondafbeelding toe"
- "Vervang de testimonials carousel met een statische grid"
- "Refactor naar een component-bestand per sectie"
Behandel AI als een collega — geef feedback, vraag verbeteringen.
### Tips uit de praktijk
- **Geef constraints aan** — geen library X, max Y regels, in TypeScript
- **Vraag om uitleg** als je iets niet snapt
- **Vraag om alternatieven** — "geef 3 versies van deze sectie"
- **Geef voorbeelden** van wat je wilt (positief) en wat je niet wilt (negatief)
---
## 8. v0.dev — van prompt naar UI
**v0.dev** (van Vercel) is een AI-tool die UI-componenten genereert in React + Tailwind + Shadcn.
### Hoe werkt het
1. Ga naar v0.dev (gratis tier beschikbaar)
2. Type een prompt (of plak vanuit ChatGPT)
3. v0 genereert een werkende component, live preview
4. Itereer ("maak het oranje", "voeg buttons toe", "fix de mobile view")
5. Copy de code, of deploy direct naar Vercel
### Wat maakt v0 sterk
- **Stack-aware** — output is direct werkende code in moderne stack
- **Visueel + code samen** — zie live wat je krijgt, niet alleen tekst
- **Component library** — Shadcn is industry-standard
- **Deploy in 1 klik** — vanuit v0 direct live op Vercel-subdomain
### Wanneer NIET v0
- Logica-zware features (forms met validatie, complex state) → liever Cursor of zelf
- Backend / API routes → niet v0's terrein
- Custom design systems → v0 leunt sterk op Shadcn
Voor landing pages, marketing sites, snelle prototypes: v0 is goud waard.
---
## 9. De slimme workflow — schets naar website
Voor de lesopdracht gebruiken we deze workflow. Het is een blauwdruk die je in elke creatieve flow kunt toepassen.
```
1. TEKEN je idee op papier
2. Maak een FOTO van je tekening
3. Upload naar ChatGPT + beschrijf je wensen
4. ChatGPT maakt een gedetailleerde PROMPT
5. Plak die prompt in v0.dev → Website!
6. DEPLOY naar Vercel
```
### Waarom dit werkt
- **Tekenen** dwingt je tot duidelijkheid — wat staat waar, wat is groot, wat klein
- **Foto + ChatGPT** = AI snapt je intentie inclusief layout
- **ChatGPT genereert prompt** = beter dan zelf typen (ChatGPT kent v0's voorkeuren)
- **v0.dev** = de visuele uitvoering
- **Vercel** = live op het web in 1 minuut
### Tips voor de tekening
- Werk groot — A4 met dikke marker
- Geef labels (HERO, FEATURES, CTA)
- Schets minstens 3 secties
- Hoeft niet mooi! Hoeft niet to scale!
### Tips voor de ChatGPT-stap
Schrijf erbij:
- Wat is het product / merk
- Doelgroep
- Sfeer (modern, speels, premium, donker, ...)
- Tech: "Genereer een v0.dev-prompt"
ChatGPT zet jouw tekening + beschrijving om in een gedetailleerde v0.dev-prompt. Plak die in v0, voilà.
---
## 10. Ethiek en valkuilen
### Auteursrecht
AI-modellen zijn getraind op het hele internet — inclusief auteursrechtelijk beschermd materiaal. Wat betekent dat voor wat je maakt?
- **Output is doorgaans van jou** — je hebt de prompt geschreven, je beslist wat te gebruiken
- **Geen plagiaat-claim 100% veilig** — als output sterk lijkt op bestaand werk, kan dat een probleem zijn
- **Vermijd** — namaak van bestaande logo's, specifieke artist-stijl waar de artist nog leeft, bekende karakters
In Nederland: rechtspraak is nog in ontwikkeling. Wees voorzichtig met commerciële uitingen.
### Bias
Trainingsdata weerspiegelt de wereld zoals 'ie is — inclusief bias. AI-output kan:
- Stereotypen versterken
- Onevenredig veel mannen / blanke mensen tonen in beelden
- Minder accuraat zijn voor underrepresented dialecten
Je kunt actief tegen-prompten. Maar wees bewust dat het er zit.
### Transparantie
Vermeld dat je AI hebt gebruikt:
- In school-opdrachten (waar relevant per opdracht-eis)
- In professionele contexten waar dit verwacht wordt
- In creatieve output als de stijl AI-typisch is
Heimelijk AI-werk presenteren als 100% eigen werk = academisch + ethisch problematisch.
### Privacy
Wat je in ChatGPT typt kan gebruikt worden voor verbetering van het model (default in gratis tier). Voor gevoelige info:
- Gebruik Tijdelijke Chat
- Of: privacy-vriendelijke alternatieven (Claude — opt-out by default, of lokale modellen)
- Nooit klant-data, medische gegevens, paspoortnummers, wachtwoorden
---
## Bronnen
- **OpenAI Tokenizer:** https://platform.openai.com/tokenizer
- **ChatGPT:** https://chat.openai.com
- **Claude:** https://claude.ai
- **v0.dev:** https://v0.dev
- **Vercel:** https://vercel.com
- **Lex Fridman podcast — Sam Altman:** uitleg over hoe LLMs werken
- **3Blue1Brown — Neural Networks playlist** (YouTube): visuele uitleg van neural nets
- **Karpathy — "Let's build GPT" (YouTube):** programmeer een mini-GPT from scratch

View File

@@ -0,0 +1,238 @@
%PDF-1.4
%<25><><EFBFBD><EFBFBD> ReportLab Generated PDF document (opensource)
1 0 obj
<<
/F1 2 0 R /F2 3 0 R /F3 5 0 R /F4 9 0 R
>>
endobj
2 0 obj
<<
/BaseFont /Helvetica /Encoding /WinAnsiEncoding /Name /F1 /Subtype /Type1 /Type /Font
>>
endobj
3 0 obj
<<
/BaseFont /Helvetica-Bold /Encoding /WinAnsiEncoding /Name /F2 /Subtype /Type1 /Type /Font
>>
endobj
4 0 obj
<<
/Contents 18 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
5 0 obj
<<
/BaseFont /Courier /Encoding /WinAnsiEncoding /Name /F3 /Subtype /Type1 /Type /Font
>>
endobj
6 0 obj
<<
/Contents 19 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
7 0 obj
<<
/Contents 20 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
8 0 obj
<<
/Contents 21 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
9 0 obj
<<
/BaseFont /Symbol /Name /F4 /Subtype /Type1 /Type /Font
>>
endobj
10 0 obj
<<
/Contents 22 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
11 0 obj
<<
/Contents 23 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
12 0 obj
<<
/Contents 24 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
13 0 obj
<<
/Contents 25 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
14 0 obj
<<
/Contents 26 0 R /MediaBox [ 0 0 595.2756 841.8898 ] /Parent 17 0 R /Resources <<
/Font 1 0 R /ProcSet [ /PDF /Text /ImageB /ImageC /ImageI ]
>> /Rotate 0 /Trans <<
>>
/Type /Page
>>
endobj
15 0 obj
<<
/PageMode /UseNone /Pages 17 0 R /Type /Catalog
>>
endobj
16 0 obj
<<
/Author (NOVI Hogeschool Utrecht) /CreationDate (D:20260603151533+00'00') /Creator (\(unspecified\)) /Keywords () /ModDate (D:20260603151533+00'00') /Producer (ReportLab PDF Library - \(opensource\))
/Subject (\(unspecified\)) /Title (Lesstof) /Trapped /False
>>
endobj
17 0 obj
<<
/Count 9 /Kids [ 4 0 R 6 0 R 7 0 R 8 0 R 10 0 R 11 0 R 12 0 R 13 0 R 14 0 R ] /Type /Pages
>>
endobj
18 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2040
>>
stream
GauHL>Bed\&:WeDbiq;Jkshg$hrK4Op9Mq'l*fErmYuX65_+KlW@d%MJ,PBY,9$muTpuQP,aLnUqS'LRA-N`4XSO!`!IjISo/@'pL]/-XkBP@gJ_0kWf:Kk^*dU"0Y+T[N_22Fq"3%(&JKHj;`$5J<L5lO&n-!fcL]h[%(PXJo6GiM#O+@rK1_^ujK)'s'p=?iN^c@kW*'X_'h=^I?K\g%r"SM2%S)tNPT`hD^=fnji;!*Nso]L2`lh`?en2?o[E]D>8'L&Qa%]9X<S;6Un)ICON9_3rh/tmb"rFahL9;r^5KFigk8oJ6CWdJWII#'.A('A>$pkT>r1^(JJ<o>_\N-lG0n"dE/i4=3[$[ooAKbPUQLXSN7[($U!bF@YpL->FLR-RT+B6nDN(-$3Q,-]c<Mi<lXAk.Theo]WHNS+otBVUQl@?9D+;Z*]ZlT]\0,H`umTi2sY"EtG>a1uYp&/!"'q64oV<P"l;A*9OQ"nb<:SO^)P2.f?8G5G[PgC`.QUQ)PI`ibU&NmF)#%5?,e5)V*N2@63E-LRM@5oYAM%1Fdok=-tD0qVV4EYh't,,J_T$!j(%!k43LmD,pj!NYL:gSm&N,0mQD<-k+7+s/Cl.ZpBEV=R;kE"a$$M;Qus)<3sMnrZVh#I=OBKY"$gQF$g3G5E>i!ag;]RbeU-gS<<M\Lh?]ob99N-&B_ADO1lm/r`<+=t?SPiPh..p=%TigUi=sQo#,il=Se^Of(.]C_Y3,VW&V65&P5o'dmktr?@NK.*3eH6TEZ6%YOrW[0$c6-UE$g/BVQ"0TKYnn%7SnUL8$3Vo;K(:1Q8GONM&ES-2))2E-KkINc%aQu2=;P\Dn.[4GoFgU$csa1fea*tLFcYY=HF?mC2UC*Ts4`rG`?%^)ja-=Dj(BOkiqel)9b^HsSoXhq9rBUR4d%EO:V(-/K2D+M3fS_Sg#@&%*g2;1\6oaJG^g*+":g;_RtUA\2-0<Mmsn^PNf]Xc@fTMC:Pa$DA)fQD$63]k&-Ifq[HX1!tVke#-;q/URr;mq!n2e^l,\p@jr,2C6+oDVEocG;Yi[-mEeVB2"RJ,^Q?84n"(5D+k9(g4n:,UJ;2_<!tX#V7qC0RaG7i'^uIT&_T8\@Hld%PBVB:/WZrhaW@E.iFMIo<K=LG8BuA1%;jiiP3VL4@02tB;GZ'?Wl;7e%f6Ec".'B<3sNgG/NHTJaFH[S"C$L:=J;9ml&hLQ0)U[a)R6fFb(Lp98,Oc4H=&HoAGaF>FZ6LMU>4Y.&fVH8YKc?`BT(kH7C@A\$nED7sI)5$cC/^aB-JS(8^GGX3aX:Gkbf!PpX="+N+U#bt9SC8^)Hp?Z6-$Vj>&`docS>Tau0+QMMLR`[nYPQH@@t&.jMt-4<8D!3lTrd*GW2_]thH=r]b7QnK.7IZe5>(>)L"D-SF*;?IH;\*"ZR1JQ)8-g^G(7<&Is;iBXm3[;0jiP17+0K:5n["luX#q3lPU'Mo%]qI_fP@aKFGb3>#*J+1=b4nS0Xk6mq3\P+*1g_1C0YsS8%0pZo>:)sW+sJe*`%3%#"b[_$_alB78]uDU+*n&A-aN;H9bTP9'lXncZXm%$5XpU3AotSi1\X-tGTYmL3'9$Am!An<`3$iLG-]<mgW)J4AE/ZIAbiSIQPY?J`lTok;n1*eSc]:B%n!mO/&9D#9rfiE`VW>d+Z"mRSek4P/!\$l%ZL%LQPbW0//,G6FoP<uAU/jiD@.djau$Yu8UJ!=X@<*A#'J+b`)Te[/%t(G:5\*BD]`'UY=qGG3N_]jR2Nkt/k`9Y31fA/>iCsFW4\2"@hg)G["c;\B@1_C3,83ViR%:up_/qQ?53a@lFos0dc%q&"a&ih5C2sEUj:/Q4kVf&@<caT/ur=`DJ\\jljU$mhr_C.\d6L'L5U4K%5.'XmB*8e,u4[b>T1p)Eh[o-S4N6C15m5uncGH`cm+$HTjKVNbB_N9^&LT3:?(A@4IkD.N*#DVa=quP1D<X&.C7OVA2@Z.LfKRM-K@e4_^C/3=(:gHXtUK.b-8FK#c?*;mm$=AqB,~>endstream
endobj
19 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2105
>>
stream
Gb!;d>BALX'RnB330P`<-EcGlRG!?RQ_lR7S$m/-Kbo:N7)W3//481Vlu1c+)1rSF+d_FgRkt[#lWj+2h[osW^6njZQiOeb_OGTNb_,<p=Ps>/mD)kKn"2b`MnD"T_=82jDgUELIIe!!BJ5,pEh^"oArsO-PJdJ)$$29*SUa5V`A*9:+Uh`F0lZ-nNKX@4KS<89XZc,7Olqkk^^6d7IJ<PkIu/0Km6h?NaNa">2PV"'&_(i&5B'jC`Z]FOd/*P#f+2gD7p$2&V9IjNX`/6]U$$\U]_qi.35\Eb;&qoG%,G")5\&7c8go?@^:e4cMaGTq[E0.*M4B4Mf\dESE6YMP,u,)a!G.l%m+O[*&_J#3[KbTo!ql-kYc)m/SshJuFs/P'^,brQ4`+2'4Vl)I>\lIc1FH]a@Gk._DXGIWZXL8dC0S__I&djd:(aDN6*>6jO5Mm;3gYOX[L0,?]p@h:mjKi9#?Bo,//?Km?M,;g%H]?1%24k`\Ou+q.9E$'5ufm`.9"GGbj,gDqaJf.;p=u%F.Rs(@3BWNhmB^*jek2f7UB@5f56bJ&^eUOZJ,]aRqiicb]o_"4p%;jVOp]03*2%;3k=DLrDiS':,6.QGR0W[*Qq@Bpq9l#6YPM*.M,LRQskY..]rrX8$V3)'RNRC=k*t*?ak5L@"V$e0^ieh1ScFBYjFB=q4;b<S(ctUb$7V[+GKr9&G5^rYmPQp*6cCSV?DAkA;D]KiuI+oL2p*+"m3k0BWScW>GH>u)f<'!*Ll1r?o^`=V4O!!fh<&s]!'`6GZ3fnl6K<05%6uuGR.81+fT1tM`rd^@;69c)H=i#F@3sJVosEVUO=Tg"0QVhQ,&t5qYBY^K1iET#uR;t2W6:lS(cHiLA-9of+_p>>rEb6pG`bqf]l'1Ie)gaX_g3VhKPh-2og:A[aXIQAY(cQjUf.>hBuPk'uOH_#Y?UqSsA4$ab&^T6AfcTP_Bc3PFId*?Kd<Q%juBI1.eD<Uf<%ILG3e?'PI//rVuHR__Jn`_"2.b;O!Y<5Ka?)ndb+)<-5,7+adQHh22.u5B?ZE$B9+r(D&m`$[,<FZqQ]aDI/SVc[cR-,G^t-W9!Tj!cpZ3CZIhNi*dH3U7gJj@p.uR&Gn)(D";6keV*]%mB'V:WNhO8`78%2Of*pM0UHO+E%S%1QsHJL0:#9_W@6X'Y-D*WNT#q6ikT?*;^t>Gd';,U?m`g=0U!AO)SIkQ8@"KdO@YIXE\=2g2Pr?0&VD!*gOXg*7\-0R'U4hcj22Sla%`=iTV10BP)3\/Hn/kn[s)f(ehN*fKnYP(W7]uHJ5+6R'skY(AijIa->$!]I>V=e;XhFW$s-m>Jm(prQl=D"b"#Rq,M\LoRgi*`&EU`%QoUBtUX>:+#tIWok@um.4H/$DR,!;T8'/kG'%MuY^`PCUd3ngeJ9+TS_o/Km.;p=\96*oJ<$K8c=@Y!YL6PM2m"@I7n%KY,FH(])?(0`&PV<g*c@6?,OVbT)"/7JuM9]Yd',A$8982*J,9-5HiK7I-A[=Xh(d^$"<7)\e/MkeTktJ+jVKU<YRd)eUKj&i>6l#7I6dUM>09Rf'LK+(F9@Z$[mu]63B*uCN-DA_^iUl8c\sO"@eG>pbSnjgXC/@m:r8-55(WhZO95_0FUEeB!6qV=mAU]-'5'JX)2dG0d7Ze4X)W1a>]t3JHdKBspjb*c]3F^_*K:D^\LDJ=J:/eN"/Z,6,]NGYJ.P6P!2.!\j<h'hWm#NEhqkUiILIBJ_SdpV>5!i[TAt!dhCrK_'E)L_r`_d$rOV_2d""gaM\40)LVqN,b.1nrkqF8`3@PkOrBfRk5m/WCmCHG,GD3s65nWsWT/&coA/gT.T\qNbaG:<*k*DT[rKON>lkCL4?F1#9mXDE3a@Ipb@ho<4:@EaG9@\j$HPq:aZ&+5G^HKEm"=;8?Z).T4",NfqYUDkE-S*IS*s%:BF;=)6^FFPb;k@E$qrn-/1]jIeaqR$@hR\/,o5O3@F5)DI&T(NS:BWIro.dqpu;'g5L>b$q$aU5,d4GJ>gAK%GA$6%m?8"+X$`q+;q>/.>Nf>?KC%"u=9U/1!3XY+`HK7k@Zg:t6+WNG8?G9VgUrr?\])]S~>endstream
endobj
20 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2327
>>
stream
Gb!#\>Ar7S'Roe[3&"1Q/Q.>79*'cUCNh4hG4"G"_iP[;VJX>aGS9C[IFrJq8*]@bb,$&g`K"J,ijk]M*7?$kO(GIc7eFrq:;=-VZ>%#sb@N<Ncfs3[jS&teI62C2@SY"8a<hZ_qN&el,U^oNIUkqaKfiaOi0#$_/.A;8Coe!G/"feelIj*"(AKut?"0Mhq4W:J]u,6P#&BQN^)pWfhoHUKnKR*SdQu+R$Y"@uC6\"^3\KHY(O.d_B_LT/pTNe9@P+Tj;\U\ZU.UPa'OB@75[V:#Qf9.9@OK<r1r#j^1X0;meFc2-i!7:jcUCj5@T=(e)m<foP;=?N%Mik0pi[l_i:nkq\-pJ!"&o.]<e?O93>eshg+-@mfj%L65)OGN#8tu[WEjXiHFcaZ[49=X6%M.a/1Il'<GY)V5DkUE$$<dM4<05heNU]r+-Fo.Z9c@S8GG[PTq34cZn'*n-;#'Lr?D##+,FmSa0@Lsg&SfP#)8o+2tE,"\eVRf\L:r6"`<A_<maAbb)3#d.?EMPi\VBl-q_#cA7VbIE\9a/n6;$j^kca412LQ(=GN9+Q[&pq)^1Qu6'S#jo6'YB/!AJ&<o@]:-UY9*24A"^_3QZK7R'/>Xjk(tE'-enkB.>I!g@UrGh;khA+nmbe$Y^$<:&5'U:'?hN:UVCjbQI=Qmn0bZlSk:\9JAS77i9EPhIf%#RAZ`(_:keIDIIP76V?o]@T<@'6o+fB=<TkLpDjV"Ej9ZF6UUP\R*oaFU6q^mdaaF'=R?TPAW"YQtHYqDb.9W%L\d\n>R]TH-K!Q"PjJWon.?qYojG[O*ON[pUlXqmtF=fk[\P]pY,7(PK@EGOA:;j9KE'sTu^aK6G((86"!26Z7XfY5@Uc7L*juSYO^LUS^I'U!]WZH91?f0d4i6SQ<G2GR--MjASA^tMn?=-M7=VuSKKaGT$oNSeWf^``@UYQ>RSK.Vg$U1Zs@O\,IWF"mBe&1jM&Sk4K\.g>muZ,l-q8-mp4`*S$a_P[;2>n[C:q*'6U#KBQ/D,DlpuFlq:>_]ZrY2o)q"[N/*3Gh57F@'].)c<(as\QT:b0ki@g)OP)gm<9.gWd0M&-l63]R=[NAl&X:$YEWn:t.g]n"\t?GN%=-iAE$p=Rei&)j[,'n*DAki]qj$/#f8/(p2+6.4H^Kb&4oeC.F]=h^,OL,CJ;n!UlVO2.e>F*p2K%<QUHj\G']eCrS*O?2fNn*uXq/V\gOL2ZVagS=N3<U>#Y'Mi!+2$,=p&)l$Jt7/cC__f)<;;GkIe4s`U#84j0UVebnh,3FBb_[H1^Mq=.=\'?$fn=de-$I,D>:D!g0A$4Tc^R9kfsg9&Hc=B@QY(*%Ne49=31i]e/2NRkgC<(<E/"[RU-UoR/Zeo9T.8JGEM1;C*pTS2<'O8Q.HACLln`^a/K`!r+@$80<A00":/k"!kGM"ipAL(EVuu^N5dqIb;'h/p]K"e38H"cr="fpSM_:Om28OWn8h(3/ch!\mKR"i<.2^fN[=JaE`76\uKPdFhl1s:tK,N><6*/'kCXF9jS.*"YFne(uWU$\#'S-$WXLL2q\I8`i>SakH[E!R?+eS>rR(`'hdA3i$K9r/ZZ)r.$j`u#ZO=]m3;QYS$)Lo^3_Xin&(j12sDG'rb3DN&-F9kVl`KZ"ZZ;Xms]D/eZ`n7+Nbq/L@.Jp(Ug]``iHOr>O;=$'8]scCnI.e\e/i"_0MR8('ng8B@R=eo$]V%CS>j4+5\(;2g+_S(AKUkkfk>-U;3V<''4#T$>+'u=mW>6G*QgW4)%33Ugc9=QiFDWqFHPB,SFpj7GA0->ZTCB8a9('CqeL>"Z/1^>&"IDAW4csY:8/*@^Z&>(#_[:jFm`.69fnP;!PK!`#a^GTVA/J=_L's;QS7AkGH12\CQIrh#N$P^6ppT72e8;Ih<)(aiZmB&>Ji+:BDucnZ\A"5D&%&QD(I/2gU3;Z8hoQl5Db7gAiO_9jUmN(p?,/W<91Q>e3`\g7do7j?a)V.eTA@>AI2)=kC#dXPat%"2@S]h1,(9m't+K2C,06Tn*g]fKcT6*J@Qj..*%cW`3RNXkIb>Ds9/Gc^P6CeH>*+jgb>Z9A`+)"e)N4h!&QV<&Z:%c1]7GXL8#e74JkKM4u8\4+4Dm<>i>u?_>AX8hl-hml>\J4=57LIcsYW%j69](jR\%h4=nd*H_hH=GpD;:c)FG-!XA@E:`Rd2_WZ^DWFK)6Q_ms5'[2D^S)$nGSG1boVmEIF0hf0s3e9l?H2.FeE>?mY46I`ok@_1oE0+D)r6e4l(TEMSasG7s25uG`MQ1`'X=2-$%^#)ctXKHYGNP+6'K%aCs))O~>endstream
endobj
21 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2149
>>
stream
Gb"/'a`8=Z&A@B[\l>YdS.$dO0=dkma,upu@l\.eK.\:E8O<O\#(n(/Isi6AM53*X*EDnL8JJ-9d!0eK][qZE*e!qYn*(2;a"_u9ZO_Kbiu.WS)o;;,]GP#RIGkB%O@Ct7@HN8h!,`k30@9:u$$"rOH'%obH)[:0&O`&UAm(]k5lK-\:I-5L^:EaL9bT2),&f>&:9rqXs3OJlJ;0*>3(`\Yr[kk._TUc277T&$*stIhr,ttde1bo+5>G]*YMe]t[su&BQYMQBFJ4qLhi5Y?_SBFgUi?8>I_lO$[7:*'`qM1d`X]3d1eKNl6B^aAI>qfPe>rssbN<%bLirj4,6kac8^P=H^!+`10-]OoJt`"nT7dGX@#(\I`G:dY:Aa;[8m&%o"Y:O>63D;2P_"lDAfK5hX(k:%OC"*T'hF$/qHRumN=l:#4pPis;+X??H0N1=MQpdC;+\:QEpW:&XVb7\KYLoHL$&-99DB8Ta%CgU]"FhH8sa<-"ur%a$>*Zp\6Kq[U3mflAqgBO]#@"pbWp``V'cZ3"\@nfk$cJpr*Hs]$m+Laah1mhr?`s(h[_/q)Ff@J94B`Y)?#bL'ain@Jb[,Car^fgoXU63_%$IKrc^0RcADf(2X:-O'VSb*_2U=&GrH-!r%oDs)>\7;qjH?&of-=mjrs(d(;eTDW;2AsC7$/'.-lF*VKLE?W_EI?@)DAHV('A'Qr8s;/fhRReZ'V-QU.!e3>/p.5*lDsfGrBJ-G&%`a%;p\T.Y)o";1aI`G.u4?tgIAT9t,dIC]/t@t!M;DfDF$^9l=%7A`JMVi0R\gnJ*_r.gaP%Qn)PF)sFGqeU9#p7pf&<OD5h++K0A01aH>ioa+UP,+*Pj#AJg"`%[+G@Bh?)9WGdSOV$CW?r8mFm_@YphiXqi]M8!.#BP6isk"LDf@mc8P`Z0YX(W_gc34EX-$eq+P1/iAnGh\2S>]B%\4=@*)?24Cn\=rm7EIhUD4Z1[3#e:mOI^Xq!QgLeKuKcj%%gPd7ut`,$)9Y`dW,KBQkJ2j6!ekTiiDK\%V@nADf<>%rnB2ADH+lF/o0h3:sDF'hRV'<nBOED&OCtQi)Lr&+[AOrh`DSA#m#d0+:`;L^@><n%D$#6s*O=lt+kDjlW1#lo!>IgGR.>=/YPrNCh&XYlj[RBZ29A5_T>I,:f&?Edi<=D5:qj7T>Yp_L]*u=+YEt;YFGS%R<U97&fT&bsJHgT:USg2K'o8mCFbjEYA]7>N7K`kEh,\/,C*T!8YZk&M6CdnM$enUV`'[@#jja/]0eb#^DjtgaP)sGQN$>(+m'rnAdd3jhT2oQ&?:ugTGHE@5nQ)A&?p>B9VZk(pub7%]rY2[+4IrB\3WmD9LO_XnE/#A*DXd2VU]tWq6uGWmR6nj95emeJ3HbPP6cm%4#6u.]uO>g1q)"R3i!P'B#<C0.P*p/@!fI#>0ibj&tpMKjOMLe6*Q?UlkbLhno48Q]Z1&D`8K>B%pVr<tE/WrtOsOfZ:poOtoaa5pIV:mMe:E/8FT3,o(#kQO-8s_tS7g^b,J3&&eKcnH?<<o<Y")T#[.=hON&OlqEVQZ);nCB2>R1:G[hc>M;.3F3MLi"#DnLHpss1ipN4%$&>8MDPR"!j@n8u5I!3UI_RFBhA"nDCoE-^U=9+Mm(O4"XbXUt]HPriFH$L9OqXW(eQ/R.EkTLR:h-]049l.\*0C.es*/J'MQC;L<aoZCQ<[!2M,+sY@pq"MX^I`5+cXfN[d,@b<$agncU4;QbXNOgVa_Ra>u9BpL=pI@]ldNLX#%<S/V-scgWl.03%'aSl#]0\k;U_*ca/u;^1rbYI+M`Oij7lH40[0o1<kmng-&U+1k"7]S.<G'WF`K7frR5irc6TLkJ$8-Bg-2^I[p-A%ShG$[X7B4O'W4HP,Q0W8D=b7m8OC&kQT=)R?%4&6[K[:6ud-T5!CB$eJ/i5F*gE4YZ6!0'5C/t$`1t?:jpn("gXuYBM0dspT2+s]6ZQnU*)>HgA=$[(:>f0_i36dAg.[Y_TAUe!4-+"=QqWEi-_ioR%/,_B]&+p4S:Cs\GaYRcKmicj/c2#Et4gF<^Slik8GASEj]\#YIQ:1LG_q>08?"JTpR[TX"H#1YSXW]HdOi@Ah&f%_hHHlFt*6NJ/'<9LYTbc^B=eOlM~>endstream
endobj
22 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1990
>>
stream
Gau`Tfl#P6'Rf^W>SmaHV@pdp1!k]W:4OU4@+BPmbD7-8A!%ar*(jqZ^1XssZ7S01!]L]bNQAZR\`YS4MbO&XR_Ni;oO^_!5$2@K1nBil)D4`Ke,/CG56lr1gO\[QiIn'AfjmL2r^UOG:lsiZIUkqaKk=_GJP0lo).=A9A7JsX=94\Wjt@5r1'6>A6C3YXo)-kLZ/79`gP0Ipn9dI3^;%!-eE02ShcU1?gCJtr$*/,^/(JVKe+*R$VE'XMrcRpk50B*knNtBWr`1>+(Q-LT4.t2tkT+%%9WiX94&%AAqGJir&aK39>k!BH69k(A;KCV$3FSm8(jS1E^&c&VJo>jF"cdGQT'6<%%C"@aHMr0?-^.f;nC7c';%oa%K/!-G';!TLn=RA'U3F@al\]:BZh`CN$@FO34uB:r/sn[`R?E`=:pf@2J.u/+MhG$3c+mBn"YI6YUm.oJD@4O3;'4V/fJZW`rJk;uF1\hp`sd;fb'nh2J_Bp@.nsqJES%U>.gU#Md]j5,Z9i?-l__Hubb`r4A8)1j-7pStI2TGO8beh+R2T"(n8(d6.8,QB(URcXmZCu%4/*XVB0W$[]rm,M:UqmlIK[%<))!FOXON:Wpg.MU^Vaj-I6Ok%I3I4ApC"I,ZesTVP-[arU.>gLSEY;q//<0#PbLdTeO23%U;%R&/Qpd0[-$!qisP+,.iV>;CLB'g4W23o?Y0-?V\mk&[)uLE[G:lH1NM^<'QW;a4EG%o!0E-?ajCOd,kM>G&MZNMrJ!VqDQA]0krua4T%0Q%01gG46ll34.ci5A4K$J@pDR;Fk?i;/]0k!ioTLV=%/O"_GY.4aZ1S$Y/lU*kF_C1Fs2fT8<*Xt,iaN30U1Xm2md=-U4*&U"a,`$I#q94SkY/NV.n(ZaLl,8k(IpW/4h4%;f*jdS_(@@@XpdAR&C_*sJg3]Q29#tfWKIRY<Ki(b[KUks`lhm;0$kRm"]SVVTR@+<QMY4>^TB5NjRfDO,O8G<=]E-o^l9DOr_os6TW%;)cTS]ToMOi+`_2"PGJU8J3<i.gY3.ubK!:keK"0<Q09!XRY/-KF;!WLnoReVs7@iZ"0Q_aA4=1c4;I(/OS"Dt<@S\`V5<HYDrVn8bs&l$RaE>"O`g:Bf3lcBHdi_?a?1HCR'IujVKtnP*c5k4ToYC)_h8"12LZcQ0>**L21W*aumAMs\SH6E"irs`C>().ZZUAad/XHj2%4W'p)*V2s3%<qmO4AdGhun\46X-L-4Z)g-kYD75/"nK"6Jr3iIroYo0QGo/on*6t^+cu@?#R@"A#`UuA-pLL`nOZZh\ge[;%q?D'+VNZlNf>oCO2XWpYl5N%-^0:i4T^)!oURaf-J]7N7,q#"8(<.+J`n9R#^57r@m8Q*8Z^+!Ws3qlUKPr#c1T5Q[0]k__KV7%McS!FiVrOZ`$DrQ"!E[\^VErj*#KV!-i\ZFR4F.cHZc&#[0\+3W%P0@sEClm_bF+U\Kf4rJt&&eo]<-FA/dq&j393;Wg"H0Zl!pq4)MXM+\iN\tNZSGA<L5S"lj"/S(F=N"I!,p*I[g!A?5]&p.4bGb]?24+B\;F(Urc>3..tc/\2E]\t/s(+J/)T@4s'nn\CrpG>YB+0b\1"2ha*^C=`F'$"lu%1Jf_q$IkA84A)]#h*M-.M31>9bmr">taUN([lq%Wmr[Ng)qKa@bR&3:_:R;4B9I[[eK]sRPc;!_HEY7=<W^igPod8/s-S,O@!FP=!2li/t?PM2&>Y/=]^h[9WQuqJ1[pR%hPperDr`En]Wb46hOp.&T(DSLEn?l4cV>'dOta..jnC?7eBnQP;4[5_tP.afR:Bqpm4WE]j(QIChMiIJaZnP_.P8=hdc#l-0lg7>.Q;_Q5&B=iO7E&d/GmA4(DI@pQni!]\l5!_\XOQUCbtqLht9+,@'"$B\n*)N?,]l'.hkhS:ej_^i)APQ9*fEeIA-N323cZcGdc]n-LO[.-(.7ilj.@H(?[3n/kNqJoL~>endstream
endobj
23 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2310
>>
stream
Gau`U?$"K9&q/*0kb;g-"4n<O/B]ee+a7@9CR536\0%!&Z.*qDQ=de)YoWPih_QL,AJ5<h\,\iH=jg"<RI5.ALknCqNVr7X,'lDFQZ"(*@N(1R8qM^#^X4]eP<Vip3/r8VQ\%sJG5<osrJpbBApg>ORg*RkmRNLq]ccVeP[mXQAc7Qs4P/mf4Yf^+(FKdu]eo(e#mFJ]9saKKo:7"`@n`Erh)+O!rV:#PR1$2?Us%s5B(LYkE(@9/C-?;Z$,WXqldDH#ds$:h^7\j+R-XZRl]OG7_tg^:X#TOpf`h><k?R:$S*)W<Ttq*q_:G8NRN[BlGB_Ek\?;qT21rOXA#TU->6B6QK(m,SEKkU`"N]Wo:IE-3AAtc`A=HfG90%.Qi2MTs?J6M?;Mc&4hsIq;D598Xk-ReWjs99)LK8'd#T4nW62J]8F<'Ig(*DXY6l^r^7m].4NfPeFLW^X*hk?)eVec/'$W8?:Yq#2''(j(jL4"W&N5b8GZ`,6X"/1cc'k811c'!i'[Us*!D2,b_j)nq9E/bM)XiE1^IJTSJ"VFWN]&hWa`Y\F7ZepJ(&@8*/W'[M(4`/bhY-mfWO(<,SO(b7X,KU[i$&r'o;&/`pHX.D'L+Lj#!Qp1`cW6M%WWZ(P4;ZSSH:?G%1f\@CcFB*r$)=+'cJ$1([9Bu:0G6_i?-I?Dc@m]^\iSr!C/ABNK`Ei$MfR$56c4h_k:NuE>?PYd79Qg,`1qWZF6VjSTCQ7XU2JAJZO\>P>an&pjY%r+/Q['[QWDt-Y@o(QeY5Yc=c$$cBQQk)-7-tHX%c&q-Ip;pYc(kD>#!Y22F?5=5]>=]SBsOBEZn9ckEhMfc-'m"jJnd:C8r"!^u=\bWhM&T-<1"FV]30rME\>e2t3pk$(fu;.b@`DQCk3X:?,?(FgA.Kg0#*2K-g%<J=3`0l4T3.;pH\(!'j*pciB"j[2&LJND#1EFsR3CCBn@-oZU'C[QW'9&iR69pAJs*E')jRiRbhomYF(#E?k<r*Be/9RUU^j.UHdEq0E2"IX!h[+8'S2X&7GQ9i7_AoM2PhN=p8i]`dEHc8aCnR&&KT\2OG!\C=[#^/M.WTXUIa[!T3DE67tBWU>i!N3X=D$V1M$km-*VEn[J3Z[X\=JWm"$93)\h]eS5`8[/jRhlqKd,IAc/Q?gN[2RoaTpVd?&lmSgNH_?NB#0OJLo@E=0k$gYE4^3/=Ept`'gCs(>Wu^*gL8erM.jUnbDpXQ+TopH#Q-LGLUkbX!J10f8j=Ml?bY?)mRU*71K1<[`Ct]=Q4U+>q'I],-TL]PFOP1TrQ*#6SdV)CN1%a2#.K+nETqG_''\^R4J`)i7#dO84gqmqq(WTe3&'2ltSbOVsFSA$J4q*uH[Zj8Jl67mgi/>F<.:;4,:+agqPtjU-]&:"tjd-aA%D\E(>OqPd>`JkY\d'dAU%0'a0P#ns;thFqePckUK?I?BQN6t[_`jc.ro-un"A^`j8b*<[j.-=J0+Ca;".4jqPV2%,M$lskkZY=]mZMM9oJ`F),K.+R^TSUfBE\cIE!]21Fe)=fj#N),oTT?hlnN;N%IW3l=><n`U$Mj(=u`J[nk8:NN`!W3@rPSX$4!;5?+8F4fSrW=+(dI9G</%q>Xc?_c6,2Gd#FbNg7%>!\2?@;V%V/-B^8&R5p1F=`C"&%b6Ab^+\'1OS>9?eW*[F$pIflif@(B4b[rJh$?G%\+46X-;.CGrhr6?JOi=)0J&eW$9DTloY\f!c/&rQf@9Ru/p(/Xf0p-O>].CcnMX/4&iQ_7gY;%aS5J&&I"AN-o]Wl-0DX=_:^9/=L/X7\B\,.(!C(p9M(TYORoOt<aOOMoTTW=Z`&JL8smetV'8E)$ZN(CPEpT(CG>Ye<tD]eP0%3m#;OO`H%.d+'q0OO$./I9u\rHIM4>'D".A*2bUE9gF3L+cJ2/\TRq1gI"IWhJl=.AuaE&s)2Q,A?bsS7,A>Y>/iq&,@aEW-hfnr+cuQHNQ>&p1buPr(*\JU`JTY3)#\*6<I:h$X$XmcDdtCH\VmEam3`V/s\FEn6pCUrk'4@@F.ToY"Rcj)kpZE^0uLVdl!ft<I<L$RKYMYK7`:2qRRB1QV<CoI(K)68OqT]/"@u=hG!p!R<OcYmrRs[AKrmA(N&Kpmh[[1T.[QZ3k@8ZIeRY!)u1;0>?`6j2LEM.,U\K<JGX2elsSokCaKouD)Y%f[AK;$R?R9b>'$4iloqVo2D[M</\Dfm3NYp@FR0uq9kXu'6hfIrE\bQB&%'H@pSRi#nN&3k-\9!(Qi2R8k_Q)^X?&u,q2Y&^@Ged@m%a\Dq*/@^^EE~>endstream
endobj
24 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 2154
>>
stream
Gb!;d>?BQK&:XAWR.=.<_FF8mcfme`8])t`UiFK?3P;GqYur>Fl=sl8IXPk:Q>F?[0Eom4N\;nsp7'agDn]?n/:-!oqeuW+V@Tleg0d"h++`f6&,O=cf^Jdf@nts8Se'&)/2qa&`NK1B3UZ"e#:t\%fS7HS=VQ2?75g'u3!+l,$UZuYM(j8/Z[mg]'h07KaS(67\F[AV!lq"64luu8I/E_"^.?/"=YN?90[2g"UH@hQ;k6q?A!ZM;54g5,qr-W&#i6;+XG.N[OhkZVEHn28gi5Z*I0@=F'XON%q#^DZd!r#B=>K.F&\/I+2iSkg<N0G<N1BIDa>noH#!Pofn%]9>MabAA;<6uIeQb!R1i$JVCZ':bcorP&kF+n!XN;)a$TsF=eQ\rZfrXJAbAI;bL?Mc]h\J#!q-RXc^1hn._&.6XLf+7_%Ps=ujpAo/R$:%"\_;[09G'mR;h;9_819*3`EDXNc8lJWp..'$_YNWFK_#m1:dH7MIYg.5YVRkM%"h`_,-O6Hc.GR7"cC9p(l/SdqnI4O@RCDB,m+'/,4Mf:*#.KL1i&T=*mcN1YfmFm'""tZjIAk&6TN*O%YBbNO9A=j2sB"*D_TpjHM_csk?`coC@HZ1$M;IhTY.@>[F2IFkk:kqGn8Z!Ide24F`)un>*,o3I+s\JDQ^SUNL>LRV%n^?:Po\3I6Q[(RlM6*m2?$VC/rgl7+EpKde9LrO]1Nl.!)1tP,V0D)a.Obg:=YN`gNc?`!h)Lc;f7Dq<G1h$T+Y:UP-3H8>Wg9'9VC.G!+)+9lp`k8o8#nlhLV1cF%4K%U+`:B*XUCX4>VmFMX/LY*2978R3cj[85J;-X8!fr-q31+6<ChL:\kSD+HIFY',9:o3*tu1>a6L?52LkkOts&O;&?\o(t57:YbPdN0i_=,^hX5lk@HYe"%9[&#6c*Z,*n#:WLFV%/Kn1juXD'=1,u(WqE<PP6rYDGGdP:$!2_YQe!N%IauB6nGEI6Qf#E/fC=JtM(ub3M*Uo7_EfcS6L&$)NS3NF7L33&n-sA"Ys5mQf;D+]WB*lR[LQ!KP#L[Z;F)]WY1OZMP9mZ&4@FG5KS3)H`]7""Uad]%L^ETAL,C]&UIm@m(fn=7CNs9pbSo5]EE5nnB#N@H+%+/L-/'T;7&=5SJP%=R:ut6ENJ)VO$?]?XorEgAZp-2.KM!EXrH`%c^_m:!o`AL\>^_6?FZ8**jb%I4S!MDUI`78W32eSeR8C.@A3.kjR3?H_qG:0]PKn-?IJc!J2th,s>8(P,@9o*h=_(VLAKn[&2TIe=[7He4Lot#:?nut^NV(Y6@Z^,+QH2+`14rbN:g(Xd,on=0o+ffG`jM%OW-)U:RZ*D2($>6m(5MSa"h7,GAm9Eu:l!nURb6p9]gjY;F*nme@FFbacuf$<=P!'f90]p'lAbiGApIFe4;,'r%"$ftm1U,i[i89%QqN8I\Bl/'IG`i0+m;D:eDa!LZWS,69:)c70l&MqO@ifcnA/:9SNjmYB(:#r]BD+B)>_l!8JgAuaf2&-=37;gLfs)s:-]ON@W<5ARrR%lcp.I"n3aO`#r_(BjJ>t&nB`&X6Y;$Qg_^(`f+H=<&=Rm]q5%<jem#V2Ad?&$kV.7b4'J24Dbp3W>4uX>,]YUeMV&=oVKhuXj?3rKaq<8"L_@(;Qbd<tD*0Nlqr!(,5>M)$km.'LLLg6P_k(:C@D3V$&2VXj,3NZ*q]XFUmDc`X3hW?3eR9M/Jr0rl9M"0%e%\Z7TCt32p3[Xc@IuC4?'g8Jiu%)GK@>bu189(K.?u6UWPoL?DO<4^4m+GF0a.F'B)`i["+:IM1_-sdg3>l*j7)^9jR9Kh(98k5E]XX,n%,&_/LuKg\^rd'ST)'?E,#"tKR;oGT>kX/g9MIZCRSDRN$gF@Su)T;706%Tm$W^RoE%HjMS/B'8\ifeQ7%%(D_5(%;(2#dbr,sV+5djr/a5!!\2f8u$.<bg/A'&MWJk^keBeU%AXM#5^_,hF.oPq&p=W0`T8UU!6VAr(0gLoSOAGu,%2ih*Ro:!Q>"J=38(4#&8Znm\4^u.q9_J]Na>(WG+r6#!FKT@(=^MOo/Pt:Tk23oog\)%o_:1D,D3&9#R68T>F0%/0H+bEnfCi<TX=;^0++rPLU,4<r(L`#XdL`)G06bWW2Z~>endstream
endobj
25 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1902
>>
stream
Gb!SlgJZcs'R]'o:/\J7Ou5RhF`Ult8-4IH,imrq?[*G]a(B-jiuO-G?+tc7,TCR8NaYjc#e7BHd`grsl0bfH0##$qB0%AceYW3hO$'&GII[FeT^Fm&m-aebj7n`Y#9c+p`,0^GE]S(77=)1::`)2ia7"8;\?V79!<n>C,Y9@,+4%p2(R&Ir^Y&(tM'FrS!ceo,N0<DEo5,lGI;Bo`@2*je5<k2^Z/KhqBHA22CgL3PGBe1*Q`IOsa7[;/V!aUn5Fd0aTsndPAU:LY:1'"Co\@f]n&KNh6>q+k\XKaO:>I(9?e>gR((Hu@&>FDld<Ai]7eN6>5)OnB"=6\KHpS$UKGDI_PD!h(bi?!5?Z$G)2/qk"pm2^t4J-#8k)g*1=c1k.^rEm6j=f)cX1EZ?`UQQVb<`R"-hP'i>M>"(f:'[le]%Pt4edL.C6@/!`b[&eUCksWkg<"O=8,IgSNIn-X1dp(n<ga^\`e$>db4'C_p>543]]CeIf4ZhV+%T"#A;@A!;,*&"*h6*SH++1ce4O>Q:5Mt.&foeVab^;$.]3Q\eh<SMYi,8M,kTH-(iQ4)b*\mMO^<of_j4++<l:i_4eIt_2d-_]`*7@m%=h?WC-!o8P)jW1hB@ac\4CYf\J';R&nQO<>b+g0^`1Y/Vea`h35aCCH&k9XY:04?.KXCA4^H^RV7sdWM+b0Q6&2,Y'Qj&#8d".<dGaEe7[>TgTen'(G.*a%/+P3<'6Js\4)f8TIVU7*+q))rp2JlKd1k7:QN%oD)!g_1j,@JVgIXNn\dQGStj/GFFS=uo+528,)3+dOl6lgZ5CsWe?]Vle1nB2W\MViNcVuR)^4emJV2'F_KP-Q/k0d\D"!t,/J+Mtce<s9I%TLe5B,=B'NuWgh@LsSjUKsG2nH).m4/&=\E>npB[.obaQ?giUIsZRHp>arEgMFR?]oA))6S'aqpR-?p7iAtCC4q1^896_-[U$>:pts.jNuK*BH`:me>+G0F3\XQ$q?<@VG7n@?Bl-m81[3P\K$WumU/3'i:cZ!'I%`,r49\KgZ,l3i!D]\[I2</a3_Cb0f"6+?\iOM>iEAK&4I*X7#S`r0%_^r[Hpf-B_SkhPH*3.%%.t=!<Y4pKq6&+cRX[\9du15F7'q3*L]j#qLG>\QiU.F.dE/>daUiHN2o*IajGj':,#HSW,0:%H"pN*A"nu8j\0]b\:cP_BeCYPE8BDbatf<9gQNrAfi=5EGZu.eCr[IKkfAoQZ87s.m1t\CEnd2Y-<g)XC#dA@[SsITHenjJR=E!4ID^HT@<R!\$=O1Em^bhfQuY&\ccTF;;qVC;1'qgE=)b0[R%q8]m9c>AWDE[`cMFDl2:-.W?Y44%1rc'Yc/Z`G-#<DW2?\69P+<<Z!Qq3Zi-7gN;3_f3&RrgtS.HrGR$g+1k"mmr'm!m+0-kG$KDGS;W\OEZ.aQgW)gkaZK6t/]6GE@mnABq<Pn`PF@95P1_>WuU[H%j7-2LtV*)NVkj8nF$a'_"hcfd^K;0lj9]Y#j'4iHOqA7[r=R&)B0(VU^AO458&%KD$'B4_(5=@[pi>3ad3^lQ9pT,(I91hW2:.I9%D]-r2JT6ck]qcOFG-2ojG^+1e%TQ)lbrn6-'Hak8eEfm46#fJQCWHKt\]q?5J&n!Vf_<HiI;f`?'[4LK`P5A&BT1l!eSk@X2CAJKfE7<ThK;@_EV<=9.[3!YoZLM8Pg]>]S1g@2O(]QIA$]6CU$$;h*YZkoa](]!ZPrd)j=lV4I:)^`$[m=U6B'Rn*'1BSZ1I3"M:W)qV,h'W!p]:]f>0TA*$km#^JgOW*hIB\Pp(',YC/<IEZBQIZLj9@+kC5&T`l:PZBmOC]dS/nAr>Fr6O;?3?RKY$Tap[fV`>`:C=>qWcUe.9k+QdJ'MK\t$a>Gph~>endstream
endobj
26 0 obj
<<
/Filter [ /ASCII85Decode /FlateDecode ] /Length 1271
>>
stream
Gb!#[D0+E#&H;*)Z'1SNEGD+g6>q+G+6'YQR1dQ.WpXt`08Hoj1X_h?3^N#6cUn7tK-?p183m?6]A)0)\S(Y;*#s:rp+n,tDIU,%_h#E2:Omf9K6R[:`b0dn0fO&=cNi$^SGp;-2X!(Q0\Miq5@D=C*H6h)O@>iJ?Got\%3fb*>o<,D%)V)e)$^o]:)J8l,45\5Yd;'i!nSaM*qP"lnE'LHHr1R6J-E";.*V*'@l/hA5]*Ur4m$]JoH>i[GPgq04hT5]<ln>,*<*/HPGs7ul\=oo4oBnQb]Sd)*9%3Z?T&D&N-[cX&;'DNd32PUeW\;"S]IT>0\A/MM&9K%#i&E^@6\.^ms)cu9/(J>;\0F`NJD[YS8MCHe@g&S$d@_MN+0M+TUA)[YX2pKTE:6W1u7s.:hFh(NrKM3&LeKYJAY05G1upFN?77b#i".>-S[h-[1dCIbrZejq7R#dgP/KHU)(\<O`QX9^[<oa]l0UE1&DA\IgQPo#ZAM)WN^=0@^+&(_FuB!E,98LZ`qe'-)Tg.)jmB<,7uA)#'64i714fE0o&UZ`JLO7gDJ+-6Q0'`Aou>VSsHOAoJ2qPg7GD93mlQ+&T0EDn80m>m;N;K$]_hja7]97qU(ar]a;8_-akHBnM&`;A=kZMo8%>\3_HGk4-CbQ%r&(ICc>h,5:RVtks.E.3XXBWaYi0TX5D+2Of6jX6r)0-,Rl4KMA5YC(NkU@C!`]ie?t##&lq?1!%JquSr"FKNTI*.kD,ur+Z'.TQs6[=-!)^`]hF+p(JnMn'GmQ]b8O9Y$ReGD;SH75(Bk`R@j.cV06E\;4-=sF>8O4TotA.Z!e#6D+1dpJhbI@Z+g!nAg^_trd7QP8h+fSLY-[6^Lg9*1$'TYpCtE-/kL&^`!_E)4.QSqe4[UOq7FN!\7q=cM>$G%Z='&rclpR=pd;c1>A;MqAm!@=cM0"-_o\VViP(qLaZ6+K]'=NuE^cOMa:9T'dMmb3H#Jde.9ZR;i6go+Nf=m8u3HnS_oDLATnH0X,i,fgf^5g-VO!_^@!603[/!BiP?,r'eL\MCm0et>ZK.D)5LhbK$s"4Y'Q!=*7Q\8Pr*&Gr0!_bJgE;6,AgZJZ]s80/R8$^OWa_TsZKIp0D_Ca>.jRbm=Y*i9T`Hmrqb3i(]lM[RF\/s\or#4_'Wf^JM'i.PJX?&]UD=tYY>E0um2do<eVot*k(IPPo<\U[fScY2Q(Je_siJ8PLk\5QN)3PG,f2kKh0:N3+M9uK+#sB^_dlhOWS:(Spn#IB~>endstream
endobj
xref
0 27
0000000000 65535 f
0000000061 00000 n
0000000122 00000 n
0000000229 00000 n
0000000341 00000 n
0000000546 00000 n
0000000651 00000 n
0000000856 00000 n
0000001061 00000 n
0000001266 00000 n
0000001343 00000 n
0000001549 00000 n
0000001755 00000 n
0000001961 00000 n
0000002167 00000 n
0000002373 00000 n
0000002443 00000 n
0000002728 00000 n
0000002841 00000 n
0000004973 00000 n
0000007170 00000 n
0000009589 00000 n
0000011830 00000 n
0000013912 00000 n
0000016314 00000 n
0000018560 00000 n
0000020554 00000 n
trailer
<<
/ID
[<f870e8545ad08e318cb8cc0470c788d5><f870e8545ad08e318cb8cc0470c788d5>]
% ReportLab generated PDF document -- digest (opensource)
/Info 16 0 R
/Root 15 0 R
/Size 27
>>
startxref
21917
%%EOF

Binary file not shown.

Binary file not shown.